2018-03-05
多线程-JAVA多线程实现的四种方式
技术杂谈 评论:0 浏览:96

转载请注明出处:https://oldnoop.tech/c/143.html

继承Thread类创建线程


Thread类本质上是实现了Runnable接口的一个实例,代表一个线程的实例。

启动线程的唯一方法就是通过Thread类的start()实例方法。

start()方法是一个native方法,它将启动一个新线程,并执行run()方法。

这种方式实现多线程很简单,通过自己的类直接extend Thread,重写run()方法,

就可以启动新线程并执行自己定义的run()方法。

例如:

public class MyThread extends Thread {
  public void run() {
   System.out.println("MyThread");
  }
}

MyThread t1= new MyThread();
MyThread t2= new MyThread();
t1.start();
t2.start();

 

实现Runnable接口创建线程

如果已经extends另一个类,就无法直接extends Thread,此时,可以实现一个Runnable接口

一般情况下,也是推荐 实现Runnable接口的方式,因为 继承了Thread类,就不能继承其他父类了

public class MyThread extends OtherClass implements Runnable {
  public void run() {
   System.out.println("MyThread.run()");
  }
}

为了启动MyThread,需要首先实例化一个Thread,并传入自己的MyThread实例
Thread t = new Thread(new MyThread());
t.start();

 

实现Callable接口

通过FutureTask包装器来创建Thread线程

Callable接口定义如下:

public interface Callable<V> {

V call() throws Exception;
}

代码示例:

Callable<V> call= new SomeCallable<V>();
FutureTask<V> task= new FutureTask<V>(call);
Thread t= new Thread(task);
t.start();

使用线程池创建线程

ExecutorService executor = Executors.newFixedThreadPool(5);
executor.execute(new Runnable(){
    public void run(){
       System.out.println("通过线程池方式创建的线程id:" +
      Thread.currentThread().getId() );
    }
});

 



  • 转载请注明出处:https://oldnoop.tech/c/143.html

Copyright © 2018 oldnoop.tech. All Rights Reserved

鄂ICP备2023022735号-1