關(guān)于java++在前在后的區(qū)別,java 多線程這個問題很多朋友還不知道,今天小六來為大家解答以上的問題,現(xiàn)在讓我們一起來看看吧!
1、所要執(zhí)行的指令,也包括了執(zhí)行指令所需的系統(tǒng)資源,不同進(jìn)程所占用的系統(tǒng)資源相對獨立。
2、所以進(jìn)程是重量級的任務(wù),它們之間的通信和轉(zhuǎn)換都需要操作系統(tǒng)付出較大的開銷。
3、 線程是進(jìn)程中的一個實體,是被系統(tǒng)獨立調(diào)度和分派的基本單位。
4、線程自己基本上不擁有系統(tǒng)資源,但它可以與同屬一個進(jìn)程的其他線程共享進(jìn)程所擁有的全部資源。
5、所以線程是輕量級的任務(wù),它們之間的通信和轉(zhuǎn)換只需要較小的系統(tǒng)開銷。
6、 Java支持多線程編程,因此用Java編寫的應(yīng)用程序可以同時執(zhí)行多個任務(wù)。
7、Java的多線程機制使用起來非常方便,用戶只需關(guān)注程序細(xì)節(jié)的實現(xiàn),而不用擔(dān)心后臺的多任務(wù)系統(tǒng)。
8、 Java語言里,線程表現(xiàn)為線程類。
9、Thread線程類封裝了所有需要的線程操作控制。
10、在設(shè)計程序時,必須很清晰地區(qū)分開線程對象和運行線程,可以將線程對象看作是運行線程的控制面板。
11、在線程對象里有很多方法來控制一個線程是否運行,睡眠,掛起或停止。
12、線程類是控制線程行為的唯一的手段。
13、一旦一個Java程序啟動后,就已經(jīng)有一個線程在運行。
14、可通過調(diào)用Thread.currentThread方法來查看當(dāng)前運行的是哪一個線程。
15、 class ThreadTest{ public static void main(String args[]){ Thread t = Thread.currentThread(); t.setName("單線程"); //對線程取名為"單線程" t.setPriority(8); //設(shè)置線程優(yōu)先級為8,最高為10,最低為1,默認(rèn)為5 System.out.println("The running thread: " + t); // 顯示線程信息 try{ for(int i=0;i<3;i++){ System.out.println("Sleep time " + i); Thread.sleep(100); // 睡眠100毫秒 } }catch(InterruptedException e){// 捕獲異常 System.out.println("thread has wrong"); } } } 多線程的實現(xiàn)方法 繼承Thread類 可通過繼承Thread類并重寫其中的run()方法來定義線程體以實現(xiàn)線程的具體行為,然后創(chuàng)建該子類的對象以創(chuàng)建線程。
16、 在繼承Thread類的子類ThreadSubclassName中重寫run()方法來定義線程體的一般格式為: public class ThreadSubclassName extends Thread{ public ThreadSubclassName(){ ..... // 編寫子類的構(gòu)造方法,可缺省 } public void run(){ ..... // 編寫自己的線程代碼 } } 用定義的線程子類ThreadSubclassName創(chuàng)建線程對象的一般格式為: ThreadSubclassName ThreadObject = new ThreadSubclassName(); 然后,就可啟動該線程對象表示的線程: ThreadObject.start(); //啟動線程 應(yīng)用繼承類Thread的方法實現(xiàn)多線程的程序。
17、本程序創(chuàng)建了三個單獨的線程,它們分別打印自己的“Hello World!”。
18、 class ThreadDemo extends Thread{ private String whoami; private int delay; public ThreadDemo(String s,int d){ whoami=s; delay=d; } public void run(){ try{ sleep(delay); }catch(InterruptedException e) System.out.println("Hello World!" + whoami + " " + delay); } } public class MultiThread{ public static void main(String args[]){ ThreadDemo t1,t2,t3; t1 = new ThreadDemo("Thread1", (int)(Math.random()*2000)); t2 = new ThreadDemo("Thread2", (int)(Math.random()*2000)); t3 = new ThreadDemo("Thread3", (int)(Math.random()*2000)); t1.start(); t2.start(); t3.start(); } } 實現(xiàn)Runnable接口 編寫多線程程序的另一種的方法是實現(xiàn)Runnable接口。
19、在一個類中實現(xiàn)Runnable接口(以后稱實現(xiàn)Runnable接口的類為Runnable類),并在該類中定義run()方法,然后用帶有Runnable參數(shù)的Thread類構(gòu)造方法創(chuàng)建線程。
20、 創(chuàng)建線程對象可用下面的兩個步驟來完成: (1)生成Runnable類ClassName的對象 ClassName RunnableObject = new ClassName(); (2)用帶有Runnable參數(shù)的Thread類構(gòu)造方法創(chuàng)建線程對象。
21、新創(chuàng)建的線程的指針將指向Runnable類的實例。
22、用該Runnable類的實例為線程提供 run()方法---線程體。
23、 Thread ThreadObject = new Thread(RunnableObject); 然后,就可啟動線程對象ThreadObject表示的線程: ThreadObject.start(); 在Thread類中帶有Runnable接口的構(gòu)造方法有: public Thread(Runnable target); public Thread(Runnable target, String name); public Thread(String name); public Thread(ThreadGroup group,Runnable target); public Thread(ThreadGroup group,Runnable target, String name); 其中,參數(shù)Runnable target表示該線程執(zhí)行時運行target的run()方法,String name以指定名字構(gòu)造線程,ThreadGroup group表示創(chuàng)建線程組。
24、 用Runnable接口實現(xiàn)的多線程。
25、 class TwoThread implements Runnable{ TwoThread(){ Thread t1 = Thread.currentThread(); t1.setName("第一主線程"); System.out.println("正在運行的線程: " + t1); Thread t2 = new Thread(this,"第二線程"); System.out.println("創(chuàng)建第二線程"); t2.start(); try{ System.out.println("第一線程休眠"); Thread.sleep(3000); }catch(InterruptedException e){ System.out.println("第一線程有錯"); } System.out.println("第一線程退出"); } public void run(){ try{ for(int i = 0;i < 5;i++){ System.out.println(“第二線程的休眠時間:” + i); Thread.sleep(1000); } }catch(InterruptedException e){ System.out.println("線程有錯"); } System.out.println("第二線程退出"); } public static void main(String args[]){ new TwoThread(); } } 程序運行結(jié)果如下: 正在運行的線程: Thread[第一主線程,5,main 創(chuàng)建第二線程 第一線程休眠 第二線程的休眠時間:0 第二線程的休眠時間:1 第二線程的休眠時間:2 第一線程退出 第二線程的休眠時間:3 第二線程的休眠時間:4 第二線程退出 另外,虛機團(tuán)上產(chǎn)品團(tuán)購,超級便宜。
本文分享完畢,希望對大家有所幫助。
標(biāo)簽:
免責(zé)聲明:本文由用戶上傳,如有侵權(quán)請聯(lián)系刪除!