一、理解多线程 多线程是这样一种机制,它允许在程序中并发执行多个 指令流,每个指令流都称为一个线程,彼此间互相独立。线 程又称为轻量级进程,它和进程一样拥有独立的执行控制, 由操作系统负责调度,区别在于线程没有独立的存储空间, 而是和所属进程中的其它线程共享一个存储空间,这使得线 程间的通信远较进程简单。 具体到java内存模型,由于Java被设计为跨平台的语 言,在内存管理上,显然也要有一个统一的模型。系统存在 一个主内存(Main Memory),Java中所有变量都储存在 主存中,对于所有线程都是共享的。每条线程都有自己的工 作内存(Working Memory),工作内存中保存的是主存中某 些变量的拷贝,线程对所有变量的操作都是在工作内存中进 行,线程之间无法相互直接访问,变量传递均需要通过主存 完成。 多个线程的执行是并发的,也就是在逻辑上“同时”, 而不管是否是物理上的“同时”。如果系统只有一个CPU, 那么真正的“同时”是不可能的。多线程和传统的单线程在 程序设计上最大的区别在于,由于各个线程的控制流彼此独一、理解多线程 多线程是这样一种机制,它允许在程序中并发执行多个 指令流,每个指令流都称为一个线程,彼此间互相独立。线 程又称为轻量级进程,它和进程一样拥有独立的执行控制, 由操作系统负责调度,区别在于线程没有独立的存储空间, 而是和所属进程中的其它线程共享一个存储空间,这使得线 程间的通信远较进程简单。 具体到 java 内存模型,由于 Java 被设计为跨平台的语 言,在内存管理上,显然也要有一个统一的模型。系统存在 一个主内存(Main Memory), Java 中所有变量都储存在 主存中,对于所有线程都是共享的。每条线程都有自己的工 作内存(Working Memory),工作内存中保存的是主存中某 些变量的拷贝,线程对所有变量的操作都是在工作内存中进 行,线程之间无法相互直接访问,变量传递均需要通过主存 完成。 多个线程的执行是并发的,也就是在逻辑上“同时” , 而不管是否是物理上的“同时”。如果系统只有一个 CPU, 那么真正的“同时”是不可能的。多线程和传统的单线程在 程序设计上最大的区别在于,由于各个线程的控制流彼此独