日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java线程名_java多线程

發布時間:2024/10/8 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java线程名_java多线程 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

首先講一下進程和線程的區別:

進程:每個進程都有獨立的代碼和數據空間(進程上下文),進程間的切換會有較大的開銷,一個進程包含1--n個線程。

線程:同一類線程共享代碼和數據空間,每個線程有獨立的運行棧和程序計數器(PC),線程切換開銷小。

線程和進程一樣分為五個階段:創建、就緒、運行、阻塞、終止。

多進程是指操作系統能同時運行多個任務(程序)。

多線程是指在同一程序中有多個順序流在執行。

在java中要想實現多線程,有兩種手段,一種是繼續Thread類,另外一種是實現Runable接口。

一、擴展java.lang.Thread類

1 public class threadTest extendsThread {2 privateString name;3 publicthreadTest(String name){4 this.name =name;5 }6 public voidrun(){7 for(int i = 0;i<=1000;i++){8 System.out.println(name+" "+i);9 try{10 sleep((int) Math.random()*10);11 } catch(InterruptedException e) {12 e.printStackTrace();13 }14 }15 }16 }17

18 classmain{19 public static voidmain(String[] args) {20 threadTest test = new threadTest("小明");21 threadTest test2 = new threadTest("小洪");22 test.start();23 test2.start();24 }25 }

輸出:

小明? 0

小洪? 0

小明? 1

小明? 2

小明? 3

小明? 4

小明? 5

小洪? 1

小洪? 2

小洪? 3

小洪? 4

小洪? 5

說明:

程序啟動運行main時候,java虛擬機啟動一個進程,主線程main在main()調用時候被創建。隨著調用MitiSay的兩個對象的start方法,另外兩個線程也啟動了,這樣,整個應用就在多線程下運行。

注意:start()方法的調用后并不是立即執行多線程代碼,而是使得該線程變為可運行態(Runnable),什么時候運行是由操作系統決定的。

從程序運行的結果可以發現,多線程程序是亂序執行。因此,只有亂序執行的代碼才有必要設計為多線程。

Thread.sleep()方法調用目的是不讓當前線程獨自霸占該進程所獲取的CPU資源,以留出一定時間給其他線程執行的機會。

實際上所有的多線程代碼執行順序都是不確定的,每次執行的結果都是隨機的。

但是start方法重復調用的話,會出現java.lang.IllegalThreadStateException異常。

如下:

1 classmain{2 public static voidmain(String[] args) {3 threadTest test = new threadTest("小明");4 threadTest test2 = new threadTest("小洪");5 test.start();6 test.start();7 }8 }

二、實現java.lang.Runnable接口

1 public class RunableImp implementsRunnable {2 privateString name;3 publicRunableImp(String name) {4 this.name =name;5 }6

7 @Override8 public voidrun() {9 for(int i=0;i<10;i++){10 System.out.println(name+": "+i);11 try{12 Thread.sleep((int)Math.random()*10);13 } catch(InterruptedException e) {14 e.printStackTrace();15 }16 }17 }18 }19

20 classmain1{21 public static voidmain(String[] args) {22 RunableImp imp = new RunableImp("A");23 RunableImp imp2 = new RunableImp("B");24 Thread thread = newThread(imp);25 Thread thread2 = newThread(imp2);26 thread.start();27 thread2.start();28 }29 }

輸出:

A:? 0

A:? 1

A:? 2

A:? 3

A:? 4

A:? 5

A:? 6

A:? 7

A:? 8

A:? 9

B:? 0

B:? 1

B:? 2

B:? 3

B:? 4

B:? 5

B:? 6

B:? 7

B:? 8

B:? 9

說明:

Thread2類通過實現Runnable接口,使得該類有了多線程類的特征。run()方法是多線程程序的一個約定。所有的多線程代碼都在run方法里面。Thread類實際上也是實現了Runnable接口的類。

在啟動的多線程的時候,需要先通過Thread類的構造方法Thread(Runnable target) 構造出對象,然后調用Thread對象的start()方法來運行多線程代碼。

實際上所有的多線程代碼都是通過運行Thread的start()方法來運行的。因此,不管是擴展Thread類還是實現Runnable接口來實現多線程,最終還是通過Thread的對象的API來控制線程的,熟悉Thread類的API是進行多線程編程的基礎。

三、Thread和Runnable的區別

如果一個類繼承Thread,則不適合資源共享。但是如果實現了Runable接口的話,則很容易的實現資源共享

總結

以上是生活随笔為你收集整理的java线程名_java多线程的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。