线程启动的方式

2020-05-28  本文已影响0人  ThinkingInDay

1: 我们在学校学习的线程启动方式有2种:

第一种:实现Runable接口,重写run方法

第二种:继承Thread类,重写run方法

如下:

public class Test implement Runnable{

    @Ovveride

      public void run(){

      //操作,任务执行

     }

  }

public class Test2 extend Thread{

    @Override

    public void run(){

    //任务操作  

  }

}

2:对于上面的例子的启动一个线程:

Test test = new Test();

Thread t = new Thread(test);

t.start();

Test2 test2 = new Test2();

test2.start();

3: 推荐的,较优的启动线程的方法,是使用Executors相关的方法去启动线程

比如: 对于实现了Runnable接口的类,去启动线程

           ExecutorService  exec = Executors.newCachedThreadPool();

            exec.execute(test);

          对于继承了Thread接口的类,去启动线程

          ExecutorService  exec = Executors.newCachedThreadPool();

            exec.execute(test2);

3:为啥要使用Executors去启动线程,而不去用本身的?

    首先:2种方式都可以启动线程,但是Executors的优选方法。

   其次:老式的启动方式相当于客户端直接启动,而通过Executors方式相当于一个客户端和任务执行的一个中间层,用它来帮你管理Thread对象。

上一篇 下一篇

猜你喜欢

热点阅读