标签:
1. 介绍
JVM支持多个线程执行。在Java中由一个叫Thread的类来扮演线程。只有通过这个类的实例来开启一个线程,每个线程都会关联这么一个对象。当这个Thread的实例的start方法被调用时,标志着一个线程会被开启。线程的表现特别是在没有被设置同步时会使人感觉疑惑和不解。本规范会解释在JLS中描述的多线程程序的表,包括在一个共享内存上正在被线程修改的值该显示为多少的规则。在内存模型上本规范和很多硬件架构相似,这些语义在JMM上会被描述。
这些语义不是描述一个多线程程序应该怎么执行,而是描述多线程程序允许怎么呈现多线程特性。一种多线程的实现必须遵守本规范允许的实现策略。
2. 锁
有很多线程间交流的机制。大部分都是基于使用监视器的同步机制,每个线程对象都会关联一个监视器来实现占有或释放资源。对于同一个监视器,同一时间只能有一个线程能够占有这个资源,而其他线程只有等上一个线程将改资源释放后才能占有这个资源。一个线程可能会占有一个监视器多次,每个lock操作都会撤销一个unlock操作。synchronized 申明都会被指向某个对象,并企图在这个对象的监视器上加一个锁,这个行为会一直堵塞在这步直到这个行为成功完成。当synchronized 被成功申明后,synchronized的主体会被执行。如果主体被执行完成或者意外退出,unlock这个监视器的行为就会被自动执行。
标签:
原文地址:http://www.cnblogs.com/wellmaxwang/p/4494989.html