java实现多线程交替打印两个数
本文实例为大家分享了java实现多线程交替打印两个数的具体代码,供大家参考,具体内容如下
方法1、使用wait和notify
packagecom.thread; publicclassT01{ publicstaticvoidmain(String[]args){ char[]char1="AAAAAA".toCharArray(); char[]char2="BBBBBB".toCharArray(); Objectobject=newObject(); Threadthread1=newThread(()->{ synchronized(object){//使用notify和wait时,必须要选获取到锁 for(inti=0;i{ synchronized(object){ for(inti=0;i 方法2、使用LockSupport方法
packagecom.thread; importjava.util.concurrent.locks.LockSupport; publicclassT02{ staticThreadthread1; staticThreadthread2; publicstaticvoidmain(String[]args){ char[]char1="AAAAAA".toCharArray(); char[]char2="BBBBBB".toCharArray(); thread1=newThread(()->{ for(inti=0;i{ for(inti=0;i 方法3、使用CAS自旋锁
packagecom.thread; publicclassT03{ enumReadEnum{ T1, T2; } staticvolatileReadEnumr=ReadEnum.T1; publicstaticvoidmain(String[]args){ char[]char1="AAAAAA".toCharArray(); char[]char2="BBBBBB".toCharArray(); Threadthread1=newThread(()->{ for(inti=0;i{ for(inti=0;i 方法4、使用Condition方法
packagecom.thread; importjava.util.concurrent.locks.Condition; importjava.util.concurrent.locks.ReentrantLock; publicclassT04{ publicstaticvoidmain(String[]args){ char[]char1="AAAAAA".toCharArray(); char[]char2="BBBBBB".toCharArray(); ReentrantLocklock=newReentrantLock(); Conditioncondition1=lock.newCondition(); Conditioncondition2=lock.newCondition(); Threadthread1=newThread(()->{ try{ lock.lock(); for(inti=0;i{ try{ lock.lock(); for(inti=0;i Condition与notify相比的好处是,Condition可以指定需要唤醒的线程,而notify是无法指定的,只能随机唤醒一个或者全唤醒(notifyAll)
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。