测试线程池
package com.mv.init;
import sun.nio.ch.ThreadPool;
import java.util.concurrent.*;
public class TestThread {
public static void main(String[] args){
ArrayBlockingQueue<Runnable> workQueue = new ArrayBlockingQueue<Runnable>(1);
ThreadPoolExecutor pool = new ThreadPoolExecutor(2,2,1L,
TimeUnit.SECONDS,workQueue, Executors.defaultThreadFactory(), new ThreadPoolExecutor.DiscardPolicy());
Thread thread1 = new Thread(new Runnable() {
@Override
public void run() {
for(int i = 0; i < 10; i++){
try {
Thread.sleep(1000L);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("--------thread1--------" + i);
}
}
});
Thread thread2 = new Thread(new Runnable() {
@Override
public void run() {
for(int i = 0; i < 5; i++){
try {
Thread.sleep(1000L);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("--------thread2--------" + i);
}
}
});
Thread thread3 = new Thread(new Runnable() {
@Override
public void run() {
for(int i = 0; i < 8; i++){
try {
Thread.sleep(1000L);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("--------thread3--------" + i);
}
}
});
Thread thread4 = new Thread(new Runnable() {
@Override
public void run() {
for(int i = 0; i < 8; i++){
try {
Thread.sleep(1000L);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("--------thread4--------" + i);
}
}
});
pool.execute(thread1);
pool.execute(thread2);
pool.execute(thread3);
pool.execute(thread4);
int i = pool.getActiveCount();
while (i > 0){
// try {
// Thread.sleep(1000L);
// } catch (InterruptedException e) {
// e.printStackTrace();
// }
i = pool.getActiveCount();
}
System.out.println("--------over--------");
pool.shutdown();
}
}