java多线程实现轮流输出数字和字母
本案例演示3个线程轮流打印输出数字字母;代码如下
成都创新互联公司主营霞山网站建设的网络公司,主营网站建设方案,app软件定制开发,霞山h5成都微信小程序搭建,霞山网站营销推广欢迎霞山等地区企业咨询
package thread;
public class ThreadTest {
public static void main(String[] args) {
Print print = new Print();
new Thread(()->{
print.printNum();
}).start();
new Thread(()->{
print.printZimu();
}).start();
new Thread(()->{
print.printZimuLittle();
}).start();
}
}
package thread;
import java.util.concurrent.locks.Condition;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
public class Print {
final Lock lock = new ReentrantLock();
final Condition num = lock.newCondition();
final Condition zimu = lock.newCondition();
final Condition zimuLittle = lock.newCondition();
public void printNum(){
lock.lock();
try {
for (int i=1;i<53;i++){
System.out.print(i);
if (i%2==0){
zimu.signal();
num.await();
}
}
} catch (InterruptedException e) {
e.printStackTrace();
} finally {
lock.unlock();
}
}
public void printZimu(){
lock.lock();
try {
for (int i=0;i<26;i++){
System.out.print((char)(i+'A'));
zimuLittle.signal();
zimu.await();
}
} catch (InterruptedException e) {
e.printStackTrace();
} finally {
lock.unlock();
}
}
public void printZimuLittle(){
lock.lock();
try {
for (int i=0;i<26;i++){
System.out.print((char)(i+'a'));
num.signal();
zimuLittle.await();
}
} catch (InterruptedException e) {
e.printStackTrace();
} finally {
lock.unlock();
}
}
}
最终输出结果为12aA34bB56cC78dD910eE1112fF1314gG1516hH1718iI1920jJ2122kK2324lL2526mM2728nN2930oO3132pP3334qQ3536rR3738sS3940tT4142uU4344vV4546wW4748xX4950yY5152zZ
分享标题:java多线程实现轮流输出数字和字母
文章链接:http://scyingshan.cn/article/pdpdps.html