new Thread 和 线程池的使用

Thread的使用

new Thread(new Runnable(){
@override
public void run(){

}
}).start();
new Thread(Runnable runnable).start();
new Thread(FutureTask{Callable callable}).start();
----项目中不建议使用new Thread的方式创建线程----
new Thread的弊端
1.每次new Thread新建对象性能差。
2.线程缺乏统一管理,可能无限制新建线程,相互之间竞争,及可能占用过多系统资源导致死机或oom。
3.缺乏更多功能,如定时执行、定期执行、线程中断。

线程池的使用--(先记录一种)

--
public class Demo1 {
static ThreadPoolExecutor executor = new ThreadPoolExecutor(3,
5,
10,
TimeUnit.SECONDS,
new ArrayBlockingQueue(10),
Executors.defaultThreadFactory(),
new ThreadPoolExecutor.AbortPolicy());

public static void main(String[] args) {
for (int i = 0; i < 10; i++) {
int j = i;
String taskName = "任务" + j;
executor.execute(() -> {
//模拟任务内部处理耗时
try {
TimeUnit.SECONDS.sleep(j);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName() + taskName + "处理完毕");
});
}
//关闭线程池
executor.shutdown();
}
}
--

posted @ 2020-04-20 17:13  GraceYang  阅读(721)  评论(0)    收藏  举报