亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何使用Java多線程

發布時間:2022-02-28 10:51:05 來源:億速云 閱讀:162 作者:小新 欄目:開發技術

這篇文章主要介紹了如何使用Java多線程,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

多線程編程

何為多線程,通俗的講就是讓你的代碼同時干好幾件事。

而我們的一個代碼文件或者一個項目就是一個進程,而如果我們想提高效率,我們可以多開幾個文件進行多進程,也可以在進程中創建多線程(多寫幾個方法),但是多進程比較耗費資源,所以一般推薦多線程,在代碼里,讓代碼做幾個文件做的事。

多線程編程可以讓我們的代碼擁有更高效率。

線程的工作過程

使用多線程需要先創建一個或者多個線程

然后讓線程調用CPU資源,開始運行

然后運行完畢等待所有線程運行完畢

然后刪除資源,結束線程

Java線程擁有優先級

優先級就是系統確定線程的調度順序,但是不執行順序,因為多線程的執行是具有無序性的。

調度順序只是系統分配資源的順序,不分配資源就無法執行。

創建多線程

如何在Java代碼中創建多線程,Java內置了用于多線程的庫。

1.繼承Thread類,重寫run()方法

我們需要寫一個類A來繼承Thread類,并重寫run()方法。

run()方法里面放我們需要進行多線程的代碼。

然后再在主類中實例化類A的對象,并且調用strat方法。

public  class TheadText  {
    public static void main(String[] args) {
        //實例化StartThread,并調用start方法使線程動起來
        StartThread t1 = new StartThread("一  ");
        t1.start();
        StartThread t2 = new StartThread("二  ");
        t2.start();
        StartThread t3 = new StartThread("三  ");
        t3.start();
        StartThread t4 = new StartThread("四  ");
        t4.start();
    }
}

/**
 * 1.繼承Thread類并重寫run方法
 */
 class StartThread extends Thread{

     String name;
     StartThread(String name){
         this.name = name;
     }
    @Override
    public void run() {

       System.out.println(name+1);
       System.out.println(name+2);
       System.out.println(name+3);
       System.out.println(name+4);
       System.out.println(name+5);
     }
 }

2. 實現接口Runnable接口,實現run方法

使用Runnable接口避免了單繼承的局限性,線程類只是實現了 Runnable 接口,還可以繼承其他類

public  class TheadText  {
    public static void main(String[] args) {
 StartRunnable startRunnable1 = new StartRunnable("  一  ");
        Thread te1 = new Thread(startRunnable1);
        te1.start();
        StartRunnable startRunnable2 = new StartRunnable("  二  ");
        Thread te2 = new Thread(startRunnable2);
        te2.start();
        StartRunnable startRunnable3 = new StartRunnable("  三  ");
        Thread te3 = new Thread(startRunnable3);
        te3.start();
        StartRunnable startRunnable4 = new StartRunnable("  四  ");
        Thread te4 = new Thread(startRunnable4);
        te4.start();
 }
}
/**
 * 2. 實現Runnable接口,實現run方法
 */
 class StartRunnable implements Runnable{
     String name;
//     重載一下方法,利于區分
     StartRunnable(String name){
         this.name = name;
     }
     @Override
     public void run() {
         System.out.println(name+1);
         System.out.println(name+2);
         System.out.println(name+3);
         System.out.println(name+4);
         System.out.println(name+5);
     }

 }

3. 實現Callable接口,實現call方法

這個我研究了挺大一會兒。

實現這個接口后,還需要實現call方法

然后通過FutureTask類來對我們實例化對象進行封裝

最后還要實例化Thread類進行start操作開啟我們的線程

代碼演示:

public  class TheadText  {
    public static void main(String[] args) {
        //先實例化
        StartCallable a = new StartCallable();
        //然后調用FutureTask類
        FutureTask<String> te1 = new FutureTask<>(a);
        //設置我們的name屬性
        a.name = "  一  ";
        //開啟我們的線程一
        new Thread(te1).start();
        StartCallable b = new StartCallable();
        FutureTask<String> te2 = new FutureTask<>(b);
        b.name = "  二  ";
        new Thread(te2).start();
        StartCallable c = new StartCallable();
        FutureTask<String> te3 = new FutureTask<>(c);
        c.name = "  三  ";
        new Thread(te3).start();
        StartCallable d = new StartCallable();
        FutureTask<String> te4 = new FutureTask<>(d);
        d.name = "  四  ";
        new Thread(te4).start();

    }
}
/**
 * 實現Callable接口,實現call方法
 */
 class StartCallable implements Callable<String>{
     String name ;
     public String call() throws Exception{
         System.out.println(name+1);
         System.out.println(name+2);
         System.out.println(name+3);
         System.out.println(name+4);
         return name;
     }
 }

線程的生命周期

線程在我們創建后(出生)等待CPU的資源分配,然后開始工作,在工作完我們分配的工作后,就會(死亡)消失

感謝你能夠認真閱讀完這篇文章,希望小編分享的“如何使用Java多線程”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

喀什市| 绥阳县| 淮安市| 威远县| 琼中| 博乐市| 会宁县| 休宁县| 华安县| 台前县| 巴彦淖尔市| 蒙城县| 拉萨市| 莱西市| 贡山| 万山特区| 德惠市| 兴业县| 布尔津县| 朝阳区| 宜章县| 肥东县| 上杭县| 沾益县| 南京市| 关岭| 呼图壁县| 渭南市| 乐业县| 萍乡市| 东至县| 政和县| 浑源县| 旬阳县| 内乡县| 中阳县| 新晃| 古蔺县| 平阳县| 曲周县| 灵山县|