美文网首页
new Thread 和 线程池的使用

new Thread 和 线程池的使用

作者: Scene_shoot | 来源:发表于2020-04-20 17:33 被阅读0次

    Thread的使用


    new Thread(new Runnable(){
    @override
    public void run(){
    }
    }).start();
    new Thread(Runnable runnable).start();
    new Thread(FutureTask<V>{Callable callable}).start();


    项目中不建议使用new Thread的方式创建线程

    new Thread的弊端

    1.每次new Thread新建对象性能差。
    2.线程缺乏统一管理,可能无限制新建线程,相互之间竞争,及可能占用过多系统资源导致死机。
    3.缺乏更多功能,如定时执行、定期执行、线程中断。

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

    newCachedThreadPool

    --创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程。
    --线程池为无限大,当执行第二个任务时第一个任务已经完成,会复用执行第一个任务的线程,而不用每次新建线程。


    ExecutorService cachedThreadPool = Executors.newCachedThreadPool();
    for (int i = 0; i < 10; i++) {
    final int index = i;
    try {
    Thread.sleep(index * 1000);
    } catch (InterruptedException e) {
    e.printStackTrace();
    }
    cachedThreadPool.execute(new Runnable() {
    @Override
    public void run() {
    System.out.println(index);
    }
    });
    }


    相关文章

      网友评论

          本文标题:new Thread 和 线程池的使用

          本文链接:https://www.haomeiwen.com/subject/sqfjihtx.html