Java多線程(一)——創建線程的方式

在Java中有幾種不同的方式創建線程,下面就說說創建線程的幾種不同的方式。

方式一、繼承Thread

繼承Thread類,重寫裏面的run()方法

public class ThreadDemo02  extends  Thread{


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


    public static void main(String[] args) {
        ThreadDemo02  demo02 = new ThreadDemo02();
        demo02.start();
        System.out.println("線程名稱:"+Thread.currentThread().getName());
    }
}

看一下輸出結果:

在這裏插入圖片描述
已經有兩個線程了,啓動一個線程是調用start()方法,而不是調用重寫的run()方法,如果只是調用了run()方法,它並沒有開啓一個新的線程,下面就看看調用run()方法輸出的線程名稱。

在這裏插入圖片描述
實際上只有一個main線程,所以x.run()方法並不能開啓一個線程。

方式二、實現Runnable接口

實現Runnable接口,重寫 run()方法

public class ThreadDemo03 implements Runnable {

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

    public static void main(String[] args) {
        ThreadDemo03 demo03 = new ThreadDemo03();

        Thread t1 = new Thread(demo03);

        t1.start();

        System.out.println("線程名稱:"+Thread.currentThread().getName());
    }

輸出結果:

在這裏插入圖片描述

方式三、實現Callable接口

實現Cabble接口,重寫call()方法,這個方法有返回值。

public class ThreadDemo04 implements Callable<String> {

    @Override
    public String call() throws Exception {

        System.out.println("線程名稱:" + Thread.currentThread().getName());
        return "hello  world!!!";
    }

    public static void main(String[] args) {

        ThreadDemo04 demo04 = new ThreadDemo04();

        FutureTask futureTask = new FutureTask(demo04);

        Thread t2 = new Thread(futureTask);

        t2.start();

        System.out.println("線程名稱:" + Thread.currentThread().getName());
    }
}

輸出結果:

在這裏插入圖片描述
實際上Callable這個接口其實還是實現Runnable這個接口

小結一下:

實現多線程一共有三種方式:

一、繼承Thread類,重寫run()方法。

二、實現Runnable接口,重寫run()方法。

三、實現Callable<?>接口,重寫call()方法。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章