两个线程交替打印字符串
需求:
有两个字符串:
String a = ""1234567"; String b = "ABCDEFG"
使用两个线程 t1和t2 ,分别打印 字符串a,b; 使其能交替输出:1A2B3C4D5E6F7G
解法:
- 这里采用juc下的工具类:LockSupport ,展现线程直线的通信,即直接,又暴力!
- 数据源:
private Thread t1;
private Thread t2;
private char[] aI = "1234567".toCharArray();
private char[] aC = "ABCDEFG".toCharArray();
- 思路和具体实现
public void test3() {
t1 = new Thread(new Runnable() {
@Override
public void run() {
for (char c : aI) {
// 上来就打印一个字符
System.out.print(c);
// 立马解锁t2
LockSupport.unpark(t2);
// 自己锁住自己
LockSupport.park();
}
}
});
t2 = new Thread(new Runnable() {
@Override
public void run() {
for (char c : aC) {
// 上来就锁住自己,防止自己先打印
LockSupport.park();
// 被t1解锁了,开始打印一个字符
System.out.print(c);
// 解锁t1 线程,让t1 能继续打印
LockSupport.unpark(t1);
}
}
});
t1.start();
t2.start();
}
转载自:https://juejin.cn/post/6961977348740775944