扩展java.lang.Thread类
生活随笔
收集整理的這篇文章主要介紹了
扩展java.lang.Thread类
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
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 + "運(yùn)行 : " + 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();}
}
程序啟動(dòng)運(yùn)行main時(shí)候,java虛擬機(jī)啟動(dòng)一個(gè)進(jìn)程,主線程main在main()調(diào)用時(shí)候被創(chuàng)建。隨著調(diào)用
兩個(gè)對(duì)象的start方法,另外兩個(gè)線程也啟動(dòng)了,這樣,整個(gè)應(yīng)用就在多線程下運(yùn)行。注意:start()方法的調(diào)用后并不是立即執(zhí)行多線程代碼,而是使得該線程變?yōu)榭蛇\(yùn)行態(tài)(Runnable),
什么時(shí)候運(yùn)行是由操作系統(tǒng)決定的。從程序運(yùn)行的結(jié)果可以發(fā)現(xiàn),多線程程序是亂序執(zhí)行。因此,只有亂序執(zhí)行的代碼才有必要設(shè)計(jì)為多線程。Thread.sleep()方法調(diào)用目的是不讓當(dāng)前線程獨(dú)自霸占該進(jìn)程所獲取的CPU資源,以留出一定時(shí)間給其他線程
執(zhí)行的機(jī)會(huì)。實(shí)際上所有的多線程代碼執(zhí)行順序都是不確定的,每次執(zhí)行的結(jié)果都是隨機(jī)的。
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 + "運(yùn)行 : " + 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方法重復(fù)調(diào)用的話,會(huì)出現(xiàn)java.lang.IllegalThreadStateException異常。Thread1 m1 = new Thread1("A");Thread1 m2 = m1;m1.start();m2.start();A運(yùn)行 : 0Exception in thread "main"
A運(yùn)行 : 1
A運(yùn)行 : 2
A運(yùn)行 : 3
A運(yùn)行 : 4
java.lang.IllegalThreadStateExceptionat java.lang.Thread.start(Thread.java:708)at com.multithread.learning.Thread1.main(Thread1.java:27)
?
總結(jié)
以上是生活随笔為你收集整理的扩展java.lang.Thread类的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 把对象转换成JSON字符串 第二稿支持
- 下一篇: 实现java.lang.Runnable