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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

扩展java.lang.Thread类

發布時間:2024/4/13 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 扩展java.lang.Thread类 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
package com.multithread.learning;public class Thread1 extends Thread {private String name;public Thread1(String name) {this.name = name;}@Overridepublic void run() {for(int i=0;i<5;i++) {System.out.println(name + "運行 : " + i);try {sleep((int)Math.random()*10);} catch (InterruptedException e) {e.printStackTrace();}} }public static void main(String[] args) {Thread1 m1 = new Thread1("A");Thread1 m2 = new Thread1("B");m1.start();m2.start();} } 程序啟動運行main時候,java虛擬機啟動一個進程,主線程main在main()調用時候被創建。隨著調用 兩個對象的start方法,另外兩個線程也啟動了,這樣,整個應用就在多線程下運行。注意:start()方法的調用后并不是立即執行多線程代碼,而是使得該線程變為可運行態(Runnable), 什么時候運行是由操作系統決定的。從程序運行的結果可以發現,多線程程序是亂序執行。因此,只有亂序執行的代碼才有必要設計為多線程。Thread.sleep()方法調用目的是不讓當前線程獨自霸占該進程所獲取的CPU資源,以留出一定時間給其他線程 執行的機會。實際上所有的多線程代碼執行順序都是不確定的,每次執行的結果都是隨機的。 package com.multithread.learning;public class Thread1 extends Thread {private String name;public Thread1(String name) {this.name = name;}@Overridepublic void run() {for(int i=0;i<5;i++) {System.out.println(name + "運行 : " + i);try {sleep((int)Math.random()*10);} catch (InterruptedException e) {e.printStackTrace();}} }public static void main(String[] args) {Thread1 m1 = new Thread1("A");Thread1 m2 = m1;m1.start();m2.start();} } start方法重復調用的話,會出現java.lang.IllegalThreadStateException異常。Thread1 m1 = new Thread1("A");Thread1 m2 = m1;m1.start();m2.start();A運行 : 0Exception in thread "main" A運行 : 1 A運行 : 2 A運行 : 3 A運行 : 4 java.lang.IllegalThreadStateExceptionat java.lang.Thread.start(Thread.java:708)at com.multithread.learning.Thread1.main(Thread1.java:27)

?

總結

以上是生活随笔為你收集整理的扩展java.lang.Thread类的全部內容,希望文章能夠幫你解決所遇到的問題。

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