①寫法一
1.創(chuàng)建一個繼承Thread類的子類
2.重寫Thread類的run( )方法
3.在run( )方法中寫上你想讓該線程執(zhí)行的操作
4.創(chuàng)建Thread類的子類的對象
5.通過此類對象調用start( )方法渠羞。
//方式一// 1.創(chuàng)建一個繼承與Thread類的子類classMyThreadextendsThread{//2.重寫Thread類的run()@Overridepublicvoidrun(){//3.在run( )方法中寫上你想讓該線程執(zhí)行的操作,此處寫的是輸出100以內的偶數for(inti=2;i<=100;i++){if(i%2==0){System.out.println(i);}}}}publicclassThreadTest{publicstaticvoidmain(String[]args){//4.創(chuàng)建Thread類的子類的對象MyThreadt1=newMyThread();//5.通過此類對象調用start()t1.start();}}
②寫法二
1.創(chuàng)建一個繼承Thread類的子類
2.重寫Thread類的run( )方法
3.在run( )方法中寫上你想讓該線程執(zhí)行的操作
4.創(chuàng)建匿名對象調用start( )方法
//方式二// 1.創(chuàng)建一個繼承與Thread類的子類classMyThreadextendsThread{//2.重寫Thread類的run()@Overridepublicvoidrun(){//3.在run( )方法中寫上你想讓該線程執(zhí)行的操作疙驾,此處寫的是輸出100以內的偶數for(inti=2;i<=100;i++){if(i%2==0){System.out.println(i);}}}}publicclassThreadTest{publicstaticvoidmain(String[]args){//4.創(chuàng)建匿名對象調用start( )方法newMyThread().start();}}
③寫法三
1.創(chuàng)建Thread類的匿名子類
//方式三:創(chuàng)建Thread類的匿名子類publicclassThreadTest{publicstaticvoidmain(String[]args){//1.創(chuàng)建一個ThreadnewThread(){//2.在花括號內直接重寫Thread的run方法@Overridepublicvoidrun(){for(inti=2;i<=100;i+=2){System.out.println(i);}}}.start();//調用start()}}
2.方式二:實現(xiàn)Runnable接口
1.創(chuàng)建一個實現(xiàn)了Runnable接口的類
2.通過該類去實現(xiàn)Runnable中的抽象方法run()
3.在run( )方法中寫上你想讓該線程執(zhí)行的操作
4.創(chuàng)建實現(xiàn)類的對象
5.將此對象作為參數傳遞到Thread類的構造器中,創(chuàng)建Tread類的對象
6.通過Thread類的對象調用start()方法
//1.創(chuàng)建一個實現(xiàn)了Runnable接口的類classMyThreadimplementsRunnable{//2..通過該類去實現(xiàn)Runnable中的抽象方法run()@Overridepublicvoidrun(){//3.在run( )方法中寫上你想讓該線程執(zhí)行的操作for(inti=2;i<100;i++){if(i%2==0){System.out.println(i);}}}}publicclassThreadTest{publicstaticvoidmain(String[]args){// 4.創(chuàng)建實現(xiàn)類的對象MyThreadmyThread=newMyThread();// 5.將此對象作為參數傳遞到Thread類的構造器中慨蛙,創(chuàng)建Thread類的對象Threadt1=newThread(myThread);// 6.通過Thread類的對象調用start()t1.start();}}
3.Thread和Runnable兩種創(chuàng)建線程方式的比較
①開發(fā)中應該選擇哪種創(chuàng)建線程的方式
在開發(fā)中優(yōu)先選擇通過實現(xiàn)Runnable接口的方式來創(chuàng)建線程。
原因:
①實現(xiàn)Runnable接口的方式沒有類的單繼承性的局限性。而通過繼承Thread類來創(chuàng)建線程后無法再繼承其他類蒲凶,有局限性茄螃。
②實現(xiàn)Runnable接口的方式更適合用來處理多個線程之間數據共享的情況缝驳。
②Thread和Runnable兩者之間的關系
Thread類是繼承Runnable接口的。
//Thread類的聲明publicclassThreadimplementsRunnable
③Thread和Runnable兩者的共同點
兩種創(chuàng)建線程的方式都需要重寫run()方法归苍,將線程要執(zhí)行的代碼聲明在run()中用狱。
叫法上的細微區(qū)別
通過Thread創(chuàng)建線程一般叫重寫run()方法。
通過Runnable創(chuàng)建線程一般叫實現(xiàn)run()方法拼弃,因為Runnable中的run()方法是抽象方法夏伊。
最近整理了java架構文檔和學習筆記文件以及架構視頻資料和高清架構進階學習導圖免費分享給大家(包括Dubbo、Redis吻氧、Netty溺忧、zookeeper、Spring cloud盯孙、分布式鲁森、高并發(fā)等架構技術資料),希望能幫助到您面試前的復習且找到一個好的工作振惰,也節(jié)省大家在網上搜索資料的時間來學習歌溉,也可以關注我一下以后會有更多干貨分享。
添加小助手VX:xuanwo008 備注好“簡書”信息即可領取資料骑晶!