package test.concurrence; public class TestThread { public static void main(String[] args) { final TestThread.Runner runner = new TestThread.Runner(); new Thread(new Runnable() { @Override public void run() { for (int i = 0; i < 50; i++) { runner.subBiz(); } } }).start(); for (int i = 0; i < 50; i++) { runner.mainBiz(); } } private static class Runner { private volatile boolean isSubRunning = true; public void mainBiz() { while (isSubRunning) {//阻止主线程继续运行,非阻塞式 } for (int i = 1; i <= 100; i++) { System.out.println(Thread.currentThread().getName() + " : " + i); } isSubRunning = true;//放子线程运行 } public void subBiz() { while (!isSubRunning) {//阻止子线程继续运行,非阻塞式 } for (int i = 1; i <= 10; i++) { System.out.println(Thread.currentThread().getName() + " : " + i); } isSubRunning = false;//放主线程运行 } } }