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