题目:两个线程交替打印,一个打印奇数,一个打印偶数
解答:大多数做法是用锁取控制线程的运行,其实可以用volatile 去控制,更加简单。(为了让线程释放资源,而不是释放锁等待,避免线程切换时间,可以使用yield方法)整体代码如下:
public class Test {
public static volatile boolean odd = false;
public static void main(String[] args) {
Thread threadA = new Thread(new A());
Thread threadB = new Thread(new B());
threadA.start();
threadB.start();
}
}
class A implements Runnable {
@Override
public void run() {
int i = 0;
while (i < 100) {
if (!Test.odd) {
System.out.println("线程A 打印:" + i);
i = i + 2;
Test.odd = true;
} else {
Thread.yield();
}
}
}
}
class B implements Runnable {
@Override
public void run() {
int i = 1;
while (i < 100) {
if (Test.odd) {
System.out.println("线程B 打印:" + i);
i = i + 2;
Test.odd = false;
} else {
Thread.yield();
}
}
}
}