为了解决对共享存储区的访问冲突,Java 引入了同步机制。但显然不够,因为在任意时刻所要求的资源不一定已经准备好了被访问,反过来,同一时刻准备好了的资源也可能不止一个。为解决访问控制问题,Java 引入阻塞机制。阻塞指的是暂停一个Java线程同步的执行以等待某个条件发生(如某资源就绪)。sleep():允许指定以毫秒为单位的一段时间作为参数,它使得线程在指定的时间内进入阻塞状态,不能得到CPU 时 间,指定的时间一过,线程重新进入可执行状态。典型地,sleep() 被用在等待某个资源就绪的情形:测试发现条件不满足后,让线程阻塞一段时间后重新 测试,直到条件满足为止。suspend()& Read More
class Object{element;public synchronized void method(){}}【描述】线程1,对synchronized(element)访问,线程2,对synchronized A()方法进行访问。【结论】获取成员变量的锁,与获取对象的锁,是独立的。并不存在说,要获取对象的锁,就要求成员变量或神马的都没有锁存在了。即,锁成员变量与锁整个对象是独立的。【描述】在前面描述的基础上,如果method()方法内部,又需要对element()同步访问。【结论】那就得等了,等先前对element的锁释放。class Object extends Thread{publ Read More