简说java程序中多线程、并发与单

java天生支持多线程——^_^.

下面简单理解下所谓多线程、并发与单核、多核的问题

简说java程序中多线程、并发与单/多核关系

1,线程与进程,系统之间的关系.

一个进程由于要处理很多的任务才能够完成一个强大的功能,但是不能仅仅只是放在一个路线上边来做,那样子将会很慢的,所以就有了将任务可划分为很多的片段放在了线程中,有很多的路执行了(属于并发,主要就是在一条线程在阻塞了的时候及时的将执行权交给了另外的线程,提高了利用率),所以他是提高效率的代名词.同理是应用与系统和进程之间的关系的.

2,单核多核与并发并行之间的关系.

单核cpu上边有很多的线程,但是由于是单核只能是由线程调度器才来选运行那个线程,这就是并发,也就是说在任何的一个极小的时间段内是只能处理一个线程中的任务的.

多核处理多线程同时存在并发和并行,这个不难理解的.

目前最流行的处理方式是多任务多线程多处理器.

3,单核为什么要有并发.

主要就是在一条线程在阻塞(IO的时候等)了的时候及时的将执行权交给了另外的线程,提高了利用率,若是没有阻塞的情况发生那么在单核上边进行并发是没有意义的.即使单核在切换线程的时候也是浪费资源的但是相比较而言还是好,最起码另一个阻塞了,我起码得有一个返回键吧,我返回键可不能无法响应的.

4,并发的时候最基本的难点是什么.

Java这种并发系统是会共享内存和IO资源的,所以最基本的地方实在协调多线程驱动的任务之间不能同时使用共享部分.

5,线程间运行机制.

Java中的线程机制是抢占式的,表示调度机会周期性的中断线程,将上下文环境切换到另外一个线程中,从而为每一个线程都提供时间片.协作式系统有两大优势:上下文环境的切换比抢占式系统所浪费的资源要消耗低,同时执行的线程数量理论上没有上限的.所以我们应该尽量在线程中使用让步语句.


分享到:


相關文章: