鍍金池/ 問答/Java  Android/ 既然網(wǎng)絡(luò)操作要放在子線程中,那同步(sync)請求又是怎么阻塞線程的?

既然網(wǎng)絡(luò)操作要放在子線程中,那同步(sync)請求又是怎么阻塞線程的?

比如OkHttp的同步請求會一直等待execute()執(zhí)行完:

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

是怎么做到的?難道execute()不是在子線程中執(zhí)行的嗎?

回答
編輯回答
空痕

execute() 阻塞當(dāng)前線程。你要用其他線程的話可以enqueue()。

題目中的 "要" 我理解為應(yīng)該。你不應(yīng)該在UI線程 execute() 。

2017年6月18日 03:29
編輯回答
墨小白

你可以把代碼寫一遍運行一次看看嗎?

你對同步的理解有問題,不是說“同步”就只能發(fā)生在主線程。
這個同步只是說在當(dāng)前線程執(zhí)行,這個線程可以是任意線程,但是你在主線程運行的時候就是會報錯。

2017年12月12日 17:14
編輯回答
陪我終

如果你這句話由子線程執(zhí)行,它并不會阻塞主線程啊。

2018年4月1日 11:46
編輯回答
吢涼

這個不是用來阻塞線程的

2017年8月16日 04:23
編輯回答
選擇

這只能看源碼了

2017年1月5日 02:29
編輯回答
萌面人
while(true){}

while死循環(huán),怎么樣

2018年3月16日 16:17