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