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

比如OkHttp的同步请求会一直等待execute()执行完:

        Response response = client.newCall(request).execute();

是怎么做到的?难道execute()不是在子线程中执行的吗?

波斯汪
浏览 837回答 6
6回答

天涯尽头无女友

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

小怪兽爱吃肉

execute() 阻塞当前线程。你要用其他线程的话可以enqueue()。 题目中的 "要" 我理解为应该。你不应该在UI线程 execute() 。

猛跑小猪

while(true){} while死循环,怎么样

慕虎7371278

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

ibeautiful

这个不是用来阻塞线程的

幕布斯6054654

这只能看源码了
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java