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)
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。