3.1 Java并发与多线程概念

3.1 多线程cpu的概念

       首先需要了解到为什么Java会支持多线程,这一切都是芯片技术的发展,多年前cpu还是单核运行模式,可以说是因为有了多核心处理器才有了并发,有了多核心多线程,才有了多线程运行的程序。

       笔者做了一个多核多线程CPU的基本构成图,可以看出一定是多核心才会有并发,单核心多线程并不是真正的并发。
3.1 Java并发与多线程概念_第1张图片

3.1.1 为什么会有并发编程

       有了上述的概念之后,相信大家对多核CPU有了一定的认识,而并发编程就是帮助我们更加充分的利用多核CPU帮助我们工作。

3.1.1 是否多线程一定会更好?

       当然不是,并发一定是我们需要的时候才使用,不是为了多线程编程而编程,多线程之间切换也是需要上下文开销的,如果处理不当的反而得不偿失。

3.1.2 多线程并发模型

       当前主要是两种的线程之间的并发模型,一种是线程共享,一种是线程隔离,是什么意思呢?
       线程共享,就是内存里的所有对象对当前所有线程都是可见的,可以直接对其进行读写操作,英文是shared state的表达。
       线程隔离,就是内存里所有对象对当前所有线程是不能直接进行读写操作的,当我需要对其进行操作时,需要对其先复制到当前线程空间里,然后进行处理,最后对主存进行刷新。英文里是separate state的表达。

3.1.3 Java中的多线程

       Java的线程和操作系统和CPU的线程是一一对应的关系,这个和Go完全不一样,Go中有了协程的概念,是一种天然支持并发的语言,协程可能是未来的趋势。

你可能感兴趣的:(Java,#,3,多线程和并发,java,多线程,并发编程,多核CPU的概念,多线程编程概念)