A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

1、每次new Thread,新建对象性能差
2、缺乏统一管理,可能导致线程创建过多,死机等。
3、缺乏更多功能,如:定时执行,定期执行,线程中断等。

tips:养成良好习惯,从线程池开始!

4种线程池:

Java通过Executors提供四种线程池,分别为:
1、newCachedThreadPool创建一个可缓存线程池,如果线程池长度超过处理需求,可以灵活回收空闲线程,若无可回收则新建线程。
2、newFixedThreadPool创建一个定长线程池,可以控制线程最大并发数,超过的线程会在队列中等待。
3、newScheduledThreadPool创建一个定长线程池,支持定时及周期性任务执行。
4、newSingleThreadExecutor创建一个单线程化的线程池,它只会用唯一的工作线程来执行任务,保证所有任务按照指定顺序执行。

示例:1、2、3、4

1、newCachedThreadPool

ExecutorService cachedThreadPool = Executors.newCachedThreadPool();
cachedThreadPool.execute(new Runnable() {
     @Override
     public void run() {
        //do something
     }
});
2、newFixedThreadPool

ExecutorService fixedThreadPool = Executors.newFixedThreadPool(3);
fixedThreadPool.execute(new Runnable() {
      @Override
      public void run() {
          //do something
      }
});
3、newScheduledThreadPool

//延迟三秒执行
ScheduledExecutorService scheduledThreadPool = Executors.newScheduledThreadPool(5);
scheduledThreadPool.schedule(new Runnable() {
     @Override
     public void run() {
           //do something
     }
}, 3, TimeUnit.SECONDS);

//表示延迟1秒后每隔3秒钟执行一次
scheduledThreadPool.scheduleAtFixedRate(new Runnable() {
    @Override
    public void run() {
        //do something
    }
}, 1, 3, TimeUnit.SECONDS);
4、newSingleThreadExecutor

ExecutorService singleThreadExecutor = Executors.newSingleThreadExecutor();
singleThreadExecutor.execute(new Runnable() {
    @Override
    public void run() {
        //do something
    }
});

---------------------
【转载,仅作分享,侵删】
作者:river66
原文:https://blog.csdn.net/river66/article/details/87690302
版权声明:本文为博主原创文章,转载请附上博文链接!

1 个回复

倒序浏览
奈斯,感谢分享
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马