日期:2014-05-20  浏览次数:20597 次

关于多进程并发问题
请问,在释放锁的时候,需要什么显性的操作吗。还是说,在停止对某一对象访问时,当然指的是synchronized的资源时,是不是当前线程就会自动释放锁,然后其他线程就可以获得锁了。还是说,一定需要某些显性的操作。

------解决方案--------------------
当前线程结束,别的线程自然就可以访问了。不用什么额外的操作
------解决方案--------------------
探讨

当前线程结束,别的线程自然就可以访问了。不用什么额外的操作

------解决方案--------------------
应该会的吧~
------解决方案--------------------
synchronized是自动释放,Lock是手动释放。
------解决方案--------------------
你实验一下就知道了,

一个对像中,两个synchronized方法,
一个线程获得一个synchronized方法的访问权后,别的线程不能再访问这个方法,也不能访问这个对像的别的synchronized方法,直到第一个线程执行完所有synchronized代码;
------解决方案--------------------
synchronized 结束之后会释放锁。当然如果有wait和notify的时候情况会复杂一些。wait的时候程序会释放锁,并且释放CPU时间片的控制权,进入等待队列。notify则不会立刻释放控制权。但是当逻辑运行完毕时会唤醒其他等待队列中的线程。因为光是synchronized 的话程序的控制性还是太死板了。没办法实现诸如读者写者这种复杂并发情况。