在解释器解释执行任何Python代码时,都需要先获得这把锁,也就是说在同一时刻内,只有一条线程可以在CPU中运行。
但是python的多线程并不是毫无用处的。当遇到I/O操作时会释放这把GIL锁,所以如果程序是一个IO密集型的程序,一个线程处在IO等待的时候另一个线程便可以取得锁并在CPU中运行,这时就发挥了多线程的作用。
但如果是纯计算的程序,没有I/O操作,那么只有取得GIL锁的线程可以在CPU中运行,其它的线程都处于等待状态,等待持有GIL锁的线程的释放锁,也就相当于单线程在跑(而且上下文切换也会有所开销)。
Java方面,其提供了并发机制:一个进程中可以并发多个线程,每条线程并行执行不同的任务。因为线程运行于多核CPU上,各线程可分布于CPU的各个核心,所以可以让程序实现真正的并发。
以上就是python和java多线程的区别,希望偶的回答对你有所帮助。