java 多线程操作(锁)
1.对象的加锁及其操作
程序中单独的并发线程对同一对象进行操作的代码段,称为临界区。java语言中的临界区可以是一个语句块
或者方法,使用关键字synchronized进行标识。
对象锁:java平台把由synchronized语句指定的对象 设置为对象锁或者监视器(monitor),对象锁是一种独
立方式的排它锁。
排它锁:当一个线程获取对象锁后,便拥有对该对象的完全操作权,其他任何线程不得对象改对象进行任何操作。
2.死锁
如果程序中多个线程相互等待对方持有的对象锁,而如果得不到对方的对象锁都不会释放自己拥有的对象锁,则
会造成线程不能继续运行,这就是死锁。
3.线程交互与同步
wait,notify方法可以实现线程的同步
当线程执行到synchronized块时,如果里面需要的资源得不到满足、处于等待状态,可以使用wait方法,这样在等待
的同时并暂时释放共享数据对象的锁,其他线程可获得改对象锁。完成操作后,只要调用notify方法就可以通知正在等待
的线程重新占有锁。