java多线程任务并发问题:任务并行和任务并发有什么区别?

1.什么是任务并行?

多个任务在同一时刻同时运行,通常需要多个处理器或者多核处理器来实现。例如一个计算机可以同时执行多个程序、多个线程、多个进程时,就是采用并行的方式来处理任务的,有效提高计算机处理效率;

2.什么是任务并发?

多个任务同时进行,但是这些任务是交替执行的,也就是一个任务执行一段时间后,再执行另外一个任务。它是通过操作系统的协作调度实现各个任务的切换,达到看上去同时进行的效果。例如:一个多线程程序中的多个线程就是同时运行的,但是因为CPU同时刻只能执行处理一个线程,所以在任意时刻只有一个线程在运行,这种实现方式是:通过各个线程之间竞争获取CPU的时间片的方式来决定该时刻运行那个线程任务;

结束语:

整体来说并行和并发都是多任务处理的方式,其中并行是采用多核处理器等硬件实现任务同步执行。而并发是通过线程之间竞争CPU时间片来决定执行谁,具体是由操作系统的调度算法来合理的分配系统资源,使多个任务看上去是同时执行。

你可能感兴趣的:(java)