第七篇:Java——三种创建线程Thread的方法

第七篇:Java——三种创建线程Thread的方法

---------------------------------------------------------------------------------------------------------
在日常生活中我们会创建多线程将耗时代码放进新建的线程里,提高代码的执行速度。那么今天我们就来看一下创建线程的三种方法
方法一:
新建类继承Thread类并重写run()方法,在主类中创建该类的子类对象,start()方法开启线程,代码如下:
//新建类并继承Thread类
public class MyThread extends java.lang.Thread {
    
    //重写run方法方法里面填写该线程执行的代码,一般为耗时代码
    @Override
    public void run() {
        //这里面填写新线程里面的代码,一般为耗时代码
    }
}

在主类中创建该类的子类对象,并开启线程

public class Test {
    public static void main(String[] args) {
        
        //创建该类的子类对象
        MyThread th = new MyThread();
        //开启线程
        th.start();
    }
}

方法二:
新建类实现Runnable接口并重写run()方法
//新建类并实现Runnable接口
public class MyThread implements Runnable {
    //重写run方法
    @Override
    public void run() {
        //该线程代码,一般为耗时代码
    }
}

创建该类的子类对象,作为参数传给Thread类,开启线程

public class Test {
    public static void main(String[] args) {
        MyThread myThread = new MyThread();
        Thread th = new Thread(myThread);
        th.start();
    }
}

方法三:
新建类并实现Callable接口,并重写run方法
public class MyThread implements Callable<> {
    @Override
    public Object call() throws Exception {
        //在这里填写线程代码,一般为耗时代码
        
        //用此方法创建的线程一定要有返回值
        return null;
    }
}

在主类中创建该接口并将该接口的子类对象作为参数传给FutureTask,再新建Thread对象,将FutureTask作为参数传给Thread

public class Test {
    public static void main(String[] args) {
    	//创建接口
        MyThread myThread = new MyThread();
        //将接口的子类对象传给FutureTask
        FutureTask task = new FutureTask<>(myThread);
        //创建Thread对象并将task传给它
        Thread th = new Thread(task);
        //开启线程
        th.start();
    }
}

以上是创建线程的三种方法,我们常用的是方法一与方法二。方法二比方法一更具拓展性和维护性。
方法二是实现了Runnable接口,方法三是实现了Callable接口,但是实现Runnable接口重写的run()方法中没有返回值,如果我们需要有返回值,我们就用方法三实现Callable接口并重写call()方法

猜你喜欢

转载自blog.csdn.net/qq_43411550/article/details/86568327