多线程操作(锁)

Posted fight139

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了多线程操作(锁)相关的知识,希望对你有一定的参考价值。

1.对象的加锁及其操作

  程序中单独的并发线程对同一对象进行操作的代码段,成为临界区。java语言中的临界区可以是一个语句块

或者方法,使用关键字synchronized进行标识。

  对象锁:java平台把由synchronized语句指定的对象 设置为对象锁或者监视器(monitor),对象锁是一种独

立方式的排它锁。

  排它锁:当一个线程获取对象锁后,便拥有对该对象的完全操作权,其他任何线程不得对象改对象进行任何操作。

2.死锁

  如果程序中多个线程相互等待对方持有的对象锁,而如果得不到对方的对象锁都不会释放自己拥有的对象锁,则

会造成线程不能继续运行,这就是死锁。

3.线程交互与同步

  wait,notify方法可以实现线程的同步

  当线程执行到synchronized块时,如果里面需要的资源得不到满足、处于等待状态,可以使用wait方法,这样在等待

的同时并暂时释放共享数据对象的锁,其他线程可获得改对象锁。完成操作后,只要调用notify方法就可以通知正在等待

的线程重新占有锁。

 

以上是关于多线程操作(锁)的主要内容,如果未能解决你的问题,请参考以下文章

IOS多线程安全(线程锁)

多线程编程之原子锁

Java多线程线程锁

Springboot Java多线程操作本地文件,加读写锁,阻塞的线程等待运行中的线程执行完再查询并写入

干货 | Java多线程-各种线程锁

java多线程 -- ReadWriteLock 读写锁