欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

python中的多線程和JAVA中的多線程有什么區別嗎

阮建安2年前25瀏覽0評論

python中的多線程和JAVA中的多線程有什么區別嗎?

python是支持多線程的,但是python里的多線程是單cpu意義上的多線程,它和多cpu上的多線程有著本質的區別,這是因為python存在一個叫Global Interpreter Lock(GIL)全局解釋器鎖。

在解釋器解釋執行任何 Python 代碼時,都需要先獲得這把鎖,也就是說在同一時刻內,只有一條線程可以在CPU中運行。

但是python的多線程并不是毫無用處的。當遇到 I/O 操作時會釋放這把GIL鎖,所以如果程序是一個IO密集型的程序,一個線程處在IO等待的時候另一個線程便可以取得鎖并在CPU中運行,這時就發揮了多線程的作用。

但如果是純計算的程序,沒有 I/O 操作,那么只有取得GIL鎖的線程可以在CPU中運行,其它的線程都處于等待狀態,等待持有GIL 鎖的線程的釋放鎖,也就相當于單線程在跑(而且上下文切換也會有所開銷)。

Java 方面,其提供了并發機制:一個進程中可以并發多個線程,每條線程并行執行不同的任務。因為線程運行于多核CPU上,各線程可分布于CPU的各個核心,所以可以讓程序實現真正的并發。

以上就是python和java多線程的區別,希望我的回答對你有所幫助。

java線程和進程,python中的多線程和JAVA中的多線程有什么區別嗎