Thread多线程5-线程池
线程池
-
背景:经常创建和销毁、使用量特别大的资源,比如并发情况下的线程,对性能影响很大;
-
思路:提前创建好多个线程,放入线程池,使用时直接获取,使用完放回线程池,可以变频繁创建销毁,实现复用;
-
好处:
- 提高响应速度(减少了创建线程的时间);
- 降低资源消耗(重复利用线程池中线程,不需要每次都创建);
- 便于线程管理
corePoolSize:核心线程池的大小;
maximumPoolSize:最大线程数;
keepAliveTime:线程没有任务是,最多保持多长时间后终止;
public class ThreadPool {
public static void main(String[] args) {
//1.创建服务,创建线程池
ExecutorService executorService = Executors.newFixedThreadPool(10);
executorService.execute(new MyThread());
executorService.execute(new MyThread());
executorService.execute(new MyThread());
executorService.submit(new MyThread());
executorService.submit(new MyThread());
//2.关闭连接
executorService.shutdown();
//3.复习
MyThread myThread=new MyThread();
new Thread(myThread,"xxx").start();
}
}
class MyThread implements Runnable{
@Override
public void run() {
System.out.println(Thread.currentThread().getName());
}
}
总结:线程创建三种方法
public class ThreadCreate {
public static void main(String[] args) {
new Thread1().start();
new Thread(new Thread2(),"abc").start();
FutureTask<Integer> futureTask=new FutureTask(new Thread3());
new Thread(futureTask,"123").start();
try {
Integer i=futureTask.get();
System.out.println(i);
} catch (InterruptedException e) {
e.printStackTrace();
} catch (ExecutionException e) {
e.printStackTrace();
}
}
}
//1.继承Thread类
class Thread1 extends Thread{
@Override
public void run() {
System.out.println("Thread1-继承Thread类");
}
}
//2.实现Runnable接口
class Thread2 implements Runnable{
@Override
public void run() {
System.out.println("Thread2-实现Runnnable接口");
}
}
//3.实现Callable接口
class Thread3 implements Callable<Integer>{
@Override
public Integer call() throws Exception {
System.out.println("Thread3-实现Callable接口");
return 100;
}
}
本文来自博客园,作者:老李学Java,转载请注明原文链接:https://www.cnblogs.com/JasonPro/p/16055906.html