j9九游会登录入口首页掌握Java并发编程的“基石”入门并发编程并发编程可以使程序的执行速度更快。多处理器的情况并发编程可以更好的发挥多个处理器的能力,从而提高程序的执行速度,但是,并发编程通常是提高运行在单处理器上的程序性能。初看,线程间的上下文切换会增大开销,并不能提高程序的执行性能。但是,阻塞使情况变得不同j9九游会登录入口首页。如果程序中的某个任务因为该程序控制范围之外的某些条件(通常是I/O)而导致不能继续执行,此时该线程阻塞,并发使得其他的线程可以继续处理其他的任务,而不用一直等待,从而提高了程序整体的执行效率。
概念:单核 CPU 上,同一时刻只能有一条线程运行,单核 CPU 上运行的单线程程序和多线程程序j9九游会登录入口首页j9九游会登录入口首页,从运行效率上看没有差别。换而言之,单 CPU 时代,没有真正的多线程并发效果,从这一点来看,多线程与 CPU 硬件的升级息息相关。
单 CPU 时代下的多线程:在单 CPU 时代多任务是共享一个 CPU 的,当一个任务占用 CPU 运行时,其他任务就会被挂起,当占用 CPU 的任务时间片用完后,会把 CPU 让给其他任务来使用,所以在单 CPU 时代多线程编程是没有太大意义的,并且线程间频繁的上下文切换还会带来额外开销。
JMM决定一个线程对共享变量的写入何时对另一个线程可见,JMM定义了线程和主内存之间的抽象关系:共享变量存储在主内存(Main Memory)中,每个线程都有一个私有的本地内存(Local Memory),本地内存保存了被该线程使用到的主内存的副本拷贝,线程对变量的所有操作都必须在工作内存中进行,而不能直接读写主内存中的变量。