您好,登錄后才能下訂單哦!
這篇文章主要介紹了如何使用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多線程”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。