看到网上一道题,三个线程按顺序打印A、B、C循环10次,于是自己按几种方法也写了一下:
一、用线程池、Lock锁和condition(Object 监视器方法的使用)组合使用实现:
package multithread;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.locks.Condition;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
public class TestABCThread {
private Lock lock = new ReentrantLock();
private Condition condition = lock.newCondition();
private int count;
public static void main(String[] args) {
ExecutorService executorService = Executors.newFixedThreadPool(3);
TestABCThread abc = new TestABCThread();
for (int i = 0; i < 10; i++) {
executorService.execute(abc.new Run("AAAAAAAAAAAAAAAA", 1));
executorService.execute(abc.new Run("BBBBBBBBBBBBBBBBB", 2));
executorService.execute(abc.new Run("CCCCCCCCCCCCCCcCC", 3));