尽管我们在前面的几个章节中,讲的都是在单个线程中一次只执行单个语句或单个表达式,然而java虚拟机却支持一次运行多个线程。这些线程都是独立地执行代码,并且这些代码操作的都是一个共享内存中的值和对象。多处理器机器能够支持线程,单处理器机器通过时间分片(time-slicing) 也能支持多线程。
在java中,我们使用Thread类来代表一个线程Thread,用户创建线程只有一个方式,那就是 创建一个Thread类的实例对象,每一个线程都和一个Thread对象相关联。通过在相应Thread对象上调用start()方法,可以启动一个线程。
当没有正确地进行同步操作时,线程的行为就会表现的很奇怪。这一章讲的都是多线程程序下的语义。比如: 当多个线程都更新了共享内存上的值时,哪一个值对于读操作来说是可见的。 由于这个手册相当于是一个针对不同硬件架构的内存模型,所以这些又被称为 java编程语言内存模型。在不引起混淆的情况下,我们将简单地把这些规则称为“内存模型”。
这些语法并没有规定一个多线程的程序应该怎样被执行,相反,它描述的是多线程程序被允许表现出来的行为。只有那些仅仅产生了所允许行为的执行策略才是一个可接受的执行策略。
原文: