生活随笔
收集整理的這篇文章主要介紹了
java开启新线程的三种方法
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。
方式1:繼承Thread類
步驟:
1):定義一個類A繼承于Java.lang.Thread類.
2):在A類中覆蓋Thread類中的run方法.
3):我們在run方法中編寫需要執行的操作:run方法里的代碼,線程執行體.
4):在main方法(線程)中,創建線程對象,并啟動線程.
(1)創建線程類對象: ???????????????
A類 ??a ?= ?new ??A類();
(2)調用線程對象的start方法: ???
a.start();//啟動一個線程
?
注意:千萬不要調用run方法,如果調用run方法好比是對象調用方法,依然還是只有一個線程,并沒有開啟新的線程.
線程只能啟動一次!
創建啟動線程實例:
?
[java]?view plain?copy
//1):定義一個類A繼承于java.lang.Thread類.??class?MusicThread?extends?Thread{??????//2):在A類中覆蓋Thread類中的run方法.??????public?void?run()?{??????????//3):在run方法中編寫需要執行的操作??????????for(int?i?=?0;?i?<?50;?i?++){??????????????System.out.println("播放音樂"+i);??????????}??????}??}????public?class?ExtendsThreadDemo?{??????public?static?void?main(String[]?args)?{????????????????????for(int?j?=?0;?j?<?50;?j?++){??????????????System.out.println("運行游戲"+j);??????????????if(j?==?10){??????????????????//4):在main方法(線程)中,創建線程對象,并啟動線程.??????????????????MusicThread?music?=?new?MusicThread();??????????????????music.start();??????????????}??????????}??????}????}??
?
?
方式2:實現Runnable接口
步驟:
1):定義一個類A實現于java.lang.Runnable接口,注意A類不是線程類.
2):在A類中覆蓋Runnable接口中的run方法.
3):我們在run方法中編寫需要執行的操作:run方法里的,線程執行體.
4):在main方法(線程)中,創建線程對象,并啟動線程.
?????(1)創建線程類對象:
?????Thread ?t = new Thread(new ?A()); ???
?????(2)調用線程對象的start方法:
? ? ?t.start();
?
[java]?view plain?copy
//1):定義一個類A實現于java.lang.Runnable接口,注意A類不是線程類.??class?MusicImplements?implements?Runnable{??????//2):在A類中覆蓋Runnable接口中的run方法.??????public?void?run()?{??????????//3):在run方法中編寫需要執行的操作??????????for(int?i?=?0;?i?<?50;?i?++){??????????????System.out.println("播放音樂"+i);??????????}????????????????}??}????public?class?ImplementsRunnableDemo?{??????public?static?void?main(String[]?args)?{??????????for(int?j?=?0;?j?<?50;?j?++){??????????????System.out.println("運行游戲"+j);??????????????if(j?==?10){??????????????????//4):在main方法(線程)中,創建線程對象,并啟動線程??????????????????MusicImplements?mi?=?new?MusicImplements();??????????????????Thread?t?=?new?Thread(mi);??????????????????t.start();??????????????}??????????}??????}????}??
?
分析繼承方式和實現方式的區別:
?
繼承方式:
? ? ? ? ? ? ? ? 1):從設計上分析,Java中類是單繼承的,如果繼承了Thread了,該類就不能再有其他的直接父類了.
? ? ? ? ? ? ? ? 2):從操作上分析,繼承方式更簡單,獲取線程名字也簡單.(操作上,更簡單)
? ? ? ? ? ? ? ? 3):從多線程共享同一個資源上分析,繼承方式不能做到.
實現方式:
? ? ? ? ? ? ? ? 1):從設計上分析,Java中類可以多實現接口,此時該類還可以繼承其他類,并且還可以實現其他接口,設計更為合理.
? ? ? ? ? ? ? ? 2):從操作上分析,實現方式稍微復雜點,獲取線程名字也比較復雜,得使用Thread.currentThread()來獲取當前線程的引用.
?? ? ? ? ? ? ? 3):從多線程共享同一個資源上分析,實現方式可以做到(是否共享同一個資源).
?
補充:實現方式獲取線程名字:
String name = Thread.currentThread().getName();
?
?
?
?
方式3:直接在函數體使用(匿名內部類,其實也是屬于第二種實現方式的特例。)
?
?
[cpp]?view plain?copy
void?java_thread()??{?????????Thread?t?=?new?Thread(new?Runnable(){??????????????public?void?run(){??? ? ? ? ? ?// run方法具體重寫? ??mSoundPoolMap.put(index,?mSoundPool.load(filePath,?index));??????????????getThis().LoadMediaComplete();??????????????}});??????????t.start();??}??
?
?
?
總結
以上是生活随笔為你收集整理的java开启新线程的三种方法的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。