创建线程的方式

有哪几种方式?

  1. 继承Thread
  2. 实现Runnable接口
  3. 实现Callbale接口

但实际后两种,更准确的理解是创建了一个可执行的任务,要采用多线程的方式执行,

还需要通过创建Thread对象来执行,比如 new Thread(new Runnable(){}).start();这样的方式来执行。

在实际开发中,我们通常采用线程池的方式来完成Thread的创建,更好管理线程资源。

1 继承Thread

class MyThread extends Thread{
    @Override
    public void run() {
        System.out.println(Thread.currentThread().getName()+":running.....");
    }
}

public static void main(String[] args){
        MyThread thread = new MyThread();
        //正确启动线程的方式
        //thread.run();//调用方法并非开启新线程
        thread.start();
}

2 实现Runnable接口

class MyTask implements Runnable{

    @Override
    public void run() {
        System.out.println(Thread.currentThread().getName()+":running....");
    }
}

public static void main(String[] args){
        MyTask task = new MyTask();
        //task.start(); //并不能直接以线程的方式来启动
        //它表达的是一个任务,需要启动一个线程来执行
        new Thread(task).start();
    }

3 实现Callbale接口

class MyTask2 implements Callable<Boolean>{

    @Override
    public Boolean call() throws Exception {
        return null;
    }
}
原文地址:https://www.cnblogs.com/hellosiyu/p/13735804.html