java多线程交替打印,两个线程轮流打印
使用重入锁实现两个线程交替打印
实现字母在前数字在后
包com。学习。图案;
导入Java。util。并发。countdownlatch
导入Java。util。并发。锁。条件;
导入Java。util。并发。锁。锁;
导入Java。util。并发。锁。重入锁;
公共类演示2 {
私有静态锁Lock=new reentrant Lock();
私有静态条件C1=锁定。新条件();
私有静态条件C2=锁定。新条件();
private static CountDownLatch count=new CountDownLatch(1);
公共静态void main(String[] args) {
字符串c= ABCDEFGHI
char[]ca=c . tochararray();
字符串n= 123456789
char[]na=n . tochararray();
线程t1=新线程(()- {
尝试{
锁定。lock();
数数。倒计时();
for(char caa : ca) {
C1。signal();
系统。出去。打印(CAA);
C2。await();
}
C1。signal();
} catch (InterruptedException e) {
e。printstacktrace();
}最后{
锁定。unlock();
}
});
线程t2=新线程(()- {
尝试{
数数。await();
锁定。lock();
for(char naa : na) {
C2。signal();
系统。出去。印刷品(NAA);
C1。await();
}
C2。signal();
} catch (InterruptedException e) {
e。printstacktrace();
}最后{
锁定。unlock();
}
});
t1。start();
T2。start();
}
}最后输出结果:
写爬虫互联网协议(互联网协议)被封了怎么解决?立即使用
免费学习视频教程推荐:java教学视频
使用LinkedTransferQueue实现两个线程交替打印
实现字母在前数字在后
包com。学习。图案;
导入Java。util。并发。linkedtransferqueue
公共类演示3 {
private static LinkedTransferQueueCharacter linkedC=new LinkedTransferQueueCharacter();
private static LinkedTransferQueueCharacter linkedN=new LinkedTransferQueueCharacter();
公共静态void main(String[] args) {
字符串c= ABCDEFGHI
char[]ca=c . tochararray();
字符串n= 123456789
char[]na=n . tochararray();
线程t1=新线程(()- {
for(char caa : ca) {
尝试{
联动c . put(CAA);
char a=linkedn。take();
系统输出打印(一);
} catch (InterruptedException e) {
e。printstacktrace();
}
}
});
线程t2=新线程(()- {
for(char naa : na) {
尝试{
char b=链接的c . take();
系统。出去。打印(b);
链接的n . put(NAA);
} catch (InterruptedException e) {
e。printstacktrace();
}
}
});
t1。start();
T2。start();
}
}输出结果:
使用同步的实现两个线程交替打印
实现字母在前数字在后
包com。学习。图案;
导入Java。util。并发。countdownlatch
公共类演示4 {
private static CountDownLatch count=new CountDownLatch(1);
公共静态void main(String[] args) {
字符串c= ABCDEFGHI
char[]ca=c . tochararray();
字符串n= 123456789
char[]na=n . tochararray();
对象锁=新对象();
线程t1=新线程(()- {
同步(锁定){
数数。倒计时();
for(char caa : ca) {
系统。出去。打印(CAA);
锁定。notify();
尝试{
锁定。wait();
} catch (InterruptedException e) {
e。printstacktrace();
}
}
锁定。notify();
}
});
线程t2=新线程(()- {
尝试{
数数。await();
} catch (InterruptedException e) {
e。printstacktrace();
}
同步(锁定){
for(char naa : na) {
系统。出去。印刷品(NAA);
锁定。notify();
尝试{
锁定。wait();
} catch (InterruptedException e) {
e。printstacktrace();
}
}
锁定。notify();
}
});
t1。start();
T2。start();
}
}输出结果:
使用锁定支持实现两个线程交替打印
实现字母在前数字在后
包com。学习。图案;
导入Java。util。并发。锁。锁支持;
公共类演示5 {
私有静态线程t1;
私有静态线程T2;
公共静态void main(String[] args) {
字符串c= ABCDEFGHI
char[]ca=c . tochararray();
字符串n= 123456789
char[]na=n . tochararray();
t1=新线程(()- {
for(char caa : ca) {
系统。出去。打印(CAA);
锁定支架。联合国公园(T2);
锁定支架。park();
}
});
t2=新线程(()- {
for(char naa : na) {
锁定支架。park();
系统。出去。印刷品(NAA);
锁定支架。联合国公园(t1);
}
});
t1。start();
T2。start();
}
}输出结果:
相关文章教程推荐:java零基础入门以上就是爪哇岛实现两个线程交替打印的详细内容,更多请关注我们其它相关文章!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。