关于线程池,这里讲解一个自认为很简单的方法,就是可以创建一个池子,该池子里面有多个线程,用的时候直接拿就行,当然了用完之后会自动放回去。
ExecutorService pool = Executors.newFixedThreadPool(2);//创建一个含有两个线程的线程池
pool.submit(new MyRunnable());//在池子里拿一个线程去执行MyRunnable里的run方法
pool.shutdown();//关闭线程池
如果你创建了一个只有两个线程的池子,然而你去池子里拿了三次线程,那么这里也能执行,原因是第一个线程完成后会放回池子
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class MyExecutor {
public static void main(String[] args) {
ExecutorService pool = Executors.newFixedThreadPool(2);
pool.submit(new MyRunnable());
pool.submit(new MyRunnable());
pool.submit(new MyRunnable());
pool.shutdown();
}
}
public class MyRunnable implements Runnable {
@Override
public void run() {
for (int i = 0; i < 3; i++) {
System.out.println(Thread.currentThread().getName() + ":" + i);
}
}
}
这里可以看出线程1被执行了两次