Java多线程(一)线程的创建

Java创建线程的方式有两种

①继承Thread类重写run()方法

/**
 * Created by hewenhao on 2020/5/12
 * Description  线程创建方式-:继承Thread类,重写run()方法
 */
public class ExtendsThread extends Thread{

    @Override
    public void run() {
        System.out.println("线程id:" + Thread.currentThread().getId() + ",线程名:" + Thread.currentThread().getName());
    }

    public static void main(String[] args) {
        System.out.println(String.format("主线程id:%s,主线程名:%s", Thread.currentThread().getId(), Thread.currentThread().getName()));
        ExtendsThread thread1 = new ExtendsThread();
        thread1.start();
        ExtendsThread thread2 = new ExtendsThread();
        thread2.run();
    }
}

运行结果:

主线程id:1,主线程名:main
线程id:1,线程名:main
线程id:9,线程名:Thread-0

Process finished with exit code 0

从结果可以看出:

线程的启动必须要调用线程类的start()方法,让线程进入可执行的状态,线程类的run()方法只是一个普通的方法,单独调用是不会新起线程的。从两个线程的运行结果来看,新建的线程不会阻塞主线程的执行。

②实现Runnable接口实现run()方法

/**
 * Created by hewenhao on 2020/5/12
 * Description  线程创建方式-:实现Runnable接口,实现run()方法
 */
public class ImplementRunnable implements Runnable{

    @Override
    public void run() {
        System.out.println(String.format("线程id:%s,线程名:%s", Thread.currentThread().getId(), Thread.currentThread().getName()));
    }

    public static void main(String[] args) {
        System.out.println(String.format("主线程id:%s,主线程名:%s", Thread.currentThread().getId(), Thread.currentThread().getName()));
        Thread thread1 = new Thread(new ImplementRunnable());
        thread1.start();
        Thread thread2 = new Thread(new ImplementRunnable());
        thread2.run();
    }
}

运行结果:

主线程id:1,主线程名:main
线程id:1,线程名:main
线程id:9,线程名:Thread-0

Process finished with exit code 0

实现runnable接口的run()方法,新建线程还是需要new一个Thread类,通过Thread类的构造方法新起线程

public Thread(Runnable target) {
        init(null, target, "Thread-" + nextThreadNum(), 0);
    }

两种线程的创建方式都可以使用,使用接口实现的方式可以避免java单继承的问题,在继承了父类的同时,可以实现多线程的功能

原文链接:http://www.cnblogs.com/dolphin0520/p/3913517.html

你可能感兴趣的:(Java多线程(一)线程的创建)