直接上干货
单线程线程池实现
public class Demo {
static int y=0;
public static void main(String[] args) {
//java中线程池的使用
//实现 ExecutorService 接口
//单线程线程池实现
ExecutorService ex = Executors.newSingleThreadExecutor();
for(int i=0;i<10;i++){
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
ex.execute(new MyThends());
}
}
static class MyThends implements Runnable{
@Override
public void run() {
// TODO Auto-generated method stub
System.out.println(y++);
}
}
}
运行结果
固定线程线程池实现
public class Demo {
static int y=0;
public static void main(String[] args) {
//java中线程池的使用
//实现 ExecutorService 接口
//单线程线程池实现
//ExecutorService ex = Executors.newSingleThreadExecutor();
//固定线程数实现
ExecutorService ex = Executors.newFixedThreadPool(2);
for(int i=0;i<10;i++){
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
ex.execute(new MyThends());
ex.execute(new MyThends());
y++;
}
}
static class MyThends implements Runnable{
@Override
public void run() {
// TODO Auto-generated method stub
System.out.println(y);
}
}
}
运行结果
设置线程数为2,就是会最多开启两个线程来处理,如果超过两个,会按顺序排队等待,处理完成的线程。
//固定线程数实现
ExecutorService ex = Executors.newFixedThreadPool(2);
不固定线程数实现
public class Demo {
static int y=0;
public static void main(String[] args) {
//java中线程池的使用
//实现 ExecutorService 接口
//不固定线程数实现
ExecutorService ex = Executors.newCachedThreadPool();
for(int i=0;i<10;i++){
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
ex.execute(new MyThends());
ex.execute(new MyThends());
ex.execute(new MyThends());
ex.execute(new MyThends());
ex.execute(new MyThends());
ex.execute(new MyThends());
y++;
}
}
运行结果
该模式不限制线程数量,只要你得硬件够硬就行。
注意:线程池它每个线程在执行完成后,不会马上销毁,会持续1分钟等待,这段时间如果有新任务需要执行,它会继续处理,不会去在new一个新的线程。