多线程同步实现的方式
来源:互联网 发布:阿里云ecs建站教程 编辑:程序博客网 时间:2024/06/05 10:55
java主要提供了三种实现同步机制的方法:
1.synchronized关键字:
a.synchronized方法,在方法的声明前加入synchronized关键字,如下:public synchronized void mutiThreadAccess();
b.synchronized代码块:synchronized块既可以把任意的代码段声明为synchronized,也可以指定上锁的对象,有非常搞的灵活性。用法如下:
synchronized(syncObject){//访问syncObject的代码}
2.wait()方法和notify()方法
当时用synchronized来修饰某个共享资源时,如果线程A1在执行synchronized代码,另外一个线程A2也要同时执行同一对象的同一synchronized代码时,线程A2将要等到线程A1执行完代码后,才能继续执行。这种情况下可以使用wait()方法和notify()方法
在synchronized代码被执行期间,线程可以调用对象的wait()方法,释放对象锁,进入等待状态,并且可以调用notify()方法或者notifyall()方法通知正在等待的其他线程,notify()方法仅唤醒一个线程并允许它去获得锁,notifyall()方法唤醒所有等待这个对象的线程并允许他们去获得锁。
3.Lock
JDK 5新增加了Lock接口以及它的一个实现类ReentrantLock(可重入锁),lock也可以用来实现多线程的同步,具体而言,它提供了如下一些方法来实现多线程的同步:
a. lock()以阻塞的方式获取锁,也就是说,如果获取得到了锁,立即返回,如果别的线程持有锁,当前线程等待,只带获取锁后返回
b. tryLock()以阻塞的方式获取锁,只是尝试的去获取一下锁,如果获取到锁,立即返回true,否则返回false.
c. lockInterruptibly()。如果获取了锁,立即返回,如果没有获取锁,当前线程处于休眠状态,直到获取锁,或者当前线程被别的线程中断,他与lock()方法最大的区别在于如果lock()方法获取不到锁,会一直处于阻塞状态,且会忽略interrupt方法。
- 多线程同步实现的方式
- 多线程实现同步的七种方式
- 多线程的实现方法,同步的实现方式
- python3.4多线程实现同步的四种方式
- java多线程同步机制的实现方式总结
- Java多线程同步的方式
- 三种方式实现多线程同步问题
- 多线程-线程同步有几种实现方式
- 多线程的实现方式
- 多线程的实现方式
- 多线程的实现方式
- 多线程的实现方式
- java多线程详解二互斥同步方式实现多线程
- 线程概念,状态及状态之间的关系,实现多线程方法,实现同步线程的方式
- 实现多线程同步的方法
- 如何实现多线程的同步
- jdk1.5以后的多线程同步方式
- 5.7多线程同步的两种方式
- Map集合的四种遍历方式
- Struts(4)——结果处理方式
- 解决MYSQL免安装版服务无法启动问题
- Vue-cli安装和使用
- 笔试题中常见动态规划
- 多线程同步实现的方式
- 1131:求组合数
- mysql 数据库整理——安装
- 多线程编程学习二(对象及变量的并发访问)
- WOJ1316-负权数
- 升、降序排列
- 42:画矩形
- Mybatis 之 MapperMethod
- 问题