为了账号安全,请及时绑定邮箱和手机立即绑定

既然网络操作要放在子线程中,那同步(sync)请求又是怎么阻塞线程的?

既然网络操作要放在子线程中,那同步(sync)请求又是怎么阻塞线程的?

波斯汪 2019-02-21 06:25:20
比如OkHttp的同步请求会一直等待execute()执行完: Response response = client.newCall(request).execute(); 是怎么做到的?难道execute()不是在子线程中执行的吗?
查看完整描述

6 回答

?
天涯尽头无女友

TA贡献1831条经验 获得超9个赞

你可以把代码写一遍运行一次看看吗?

你对同步的理解有问题,不是说“同步”就只能发生在主线程。
这个同步只是说在当前线程执行,这个线程可以是任意线程,但是你在主线程运行的时候就是会报错。

查看完整回答
反对 回复 2019-03-01
?
小怪兽爱吃肉

TA贡献1852条经验 获得超1个赞

execute() 阻塞当前线程。你要用其他线程的话可以enqueue()。

题目中的 "要" 我理解为应该。你不应该在UI线程 execute() 。

查看完整回答
反对 回复 2019-03-01
?
猛跑小猪

TA贡献1858条经验 获得超8个赞

while(true){}

while死循环,怎么样

查看完整回答
反对 回复 2019-03-01
?
慕虎7371278

TA贡献1802条经验 获得超4个赞

如果你这句话由子线程执行,它并不会阻塞主线程啊。

查看完整回答
反对 回复 2019-03-01
?
ibeautiful

TA贡献1993条经验 获得超5个赞

这个不是用来阻塞线程的

查看完整回答
反对 回复 2019-03-01
?
幕布斯6054654

TA贡献1876条经验 获得超7个赞

这只能看源码了

查看完整回答
反对 回复 2019-03-01
  • 6 回答
  • 0 关注
  • 836 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信