ios線程鎖有哪幾種 在使用多線程和連接池的情況下如何保證SQL執(zhí)行順序?
在使用多線程和連接池的情況下如何保證SQL執(zhí)行順序?謝謝你的邀請!使用同步鎖存器可以解決此問題。讓我們看一下定義:多線程執(zhí)行順序控制?線程啟動后,不會立即執(zhí)行,而是等待CPU的資源調(diào)度,CPU的調(diào)度順
在使用多線程和連接池的情況下如何保證SQL執(zhí)行順序?
謝謝你的邀請
!使用同步鎖存器可以解決此問題。讓我們看一下定義:
多線程執(zhí)行順序控制?
線程啟動后,不會立即執(zhí)行,而是等待CPU的資源調(diào)度,CPU的調(diào)度順序由操作系統(tǒng)通過復(fù)雜算法計算出來。在啟動線程得到CPU指令后,它將與主線程切換并執(zhí)行run方法。因此,它自然不會按開始順序執(zhí)行,如下圖所示:
如果希望線程按順序執(zhí)行,可以使用以下方法。
方法1:使用join方法
join方法的作用是停止正在執(zhí)行的線程,釋放CPU的控制,讓調(diào)用join的線程立即執(zhí)行,如下圖所示:
方法2:executorservice
通過executorservice executors=Executors.newSingleThreadExecutor()創(chuàng)建線程池然后將所有要執(zhí)行的線程任務(wù)提交到線程池中,如下圖所示:
~]->Main->t1當主線程執(zhí)行到T1時,T1線程開始執(zhí)行,然后主線程向下執(zhí)行,當主線程執(zhí)行到T2時,屬于parallel->Main->t2T2線程開始執(zhí)行,main繼續(xù)執(zhí)行,屬于parallel->t1->t2。T1和T2屬于并行線程->M,等待子線程執(zhí)行完成。