您好,登錄后才能下訂單哦!
本案例演示3個線程輪流打印輸出數(shù)字字母;代碼如下
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();
}
}
}
最終輸出結(jié)果為12aA34bB56cC78dD910eE1112fF1314gG1516hH1718iI1920jJ2122kK2324lL2526mM2728nN2930oO3132pP3334qQ3536rR3738sS3940tT4142uU4344vV4546wW4748xX4950yY5152zZ
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。