java中创建线程的三种方法

创建线程的三种方式

  1. 继承Thread类,重写run()方法
  2. 实现Runnable接口
  3. 实现Callable接口

第一种继承Thread类

  1. 继承Thread类
  2. 重写run方法
  3. 创建线程类
  4. start()执行
public class TestCreateThread {
    public static void main(String[] args) {
        // 第三步
        MyThread myThread = new MyThread();
        // 第四步
        myThread.start();
    }
}
// 第一步
class MyThread extends Thread{
    // 第二步
    @Override
    public void run() {
        System.out.println("我被执行了");
    }
}

第二种实现Runable接口

  1. 实现Runnable接口
  2. 重写run()方法
  3. 创建实现Runnable接口的对象
  4. 通过3创建Thread对象
  5. 执行start()方法
public class TestThread {
    public static void main(String[] args) {
        MyThread mt = new MyThread();
        new Thread(mt).start();
    }
}

class MyThread implements Runnable{

    @Override
    public void run() {
        System.out.println("多线程");
    }

}

第三种实现Callable接口

  1. 实现Callable接口,需要返回值
  2. 重写call()方法,需要返回值一致
  3. 创建实现Callable接口的对象
  4. 创建服务(线程池)
  5. 执行
  6. 获取结果
  7. 关闭服务
public class TestThread {
    public static void main(String[] args) throws ExecutionException, InterruptedException {
        MyThread mt = new MyThread();
        // 创建执行服务
        ExecutorService executorService = Executors.newFixedThreadPool(3);

        // 执行
        Future<Boolean> submit = executorService.submit(mt);

        // 获取结果
        Boolean aBoolean = submit.get();
        System.out.println(aBoolean);

        // 关闭服务
        executorService.shutdownNow();

    }
}

class MyThread implements Callable<Boolean>{

    @Override
    public Boolean call() {
        System.out.println("多线程");
        return true;
    }
}

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×