java笔记之线程方式1启动线程
生活随笔
收集整理的這篇文章主要介紹了
java笔记之线程方式1启动线程
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
* 需求:我們要實現多線程的程序。
?* 如何實現呢?
?* ??由于線程是依賴進程而存在的,所以我們應該先創建一個進程出來。
?* ??而進程是由系統創建的,所以我們應該去調用系統功能創建一個進程。
?* ??Java是不能直接調用系統功能的,所以,我們沒有辦法直接實現多線程程序。
?* ??但是呢?Java可以去調用C/C++寫好的程序來實現多線程程序。
?* ??由C/C++去調用系統功能創建進程,然后由Java去調用這樣的東西,
?* ??然后提供一些類供我們使用。我們就可以實現多線程程序了。
?* 那么Java提供的類是什么呢?
?* ??Thread
?* ??通過查看API,我們知道了有2中方式實現多線程程序。
?*
?* 方式1:繼承Thread類。
?* 步驟
?* ??A:自定義類MyThread繼承Thread類。
?* ??B:MyThread類里面重寫run()?
?* ???為什么是run()方法呢?
?* ??C:創建對象
?* ??D:啟動線程
run()和start()的區別?
??// run():僅僅是封裝被線程執行的代碼,直接調用是普通方法
??// start():首先啟動了線程,然后再由jvm去調用該線程的run()方法。
?
1 public class MyThreadDemo { 2 public static void main(String[] args) { 3 // 創建線程對象 4 // MyThread my = new MyThread(); 5 // // 啟動線程 6 // my.run(); 7 // my.run(); 8 // 調用run()方法為什么是單線程的呢? 9 // 因為run()方法直接調用其實就相當于普通的方法調用,所以你看到的是單線程的效果 10 // 要想看到多線程的效果,就必須說說另一個方法:start() 11 // 面試題:run()和start()的區別? 12 // run():僅僅是封裝被線程執行的代碼,直接調用是普通方法 13 // start():首先啟動了線程,然后再由jvm去調用該線程的run()方法。 14 // MyThread my = new MyThread(); 15 // my.start(); 16 // // IllegalThreadStateException:非法的線程狀態異常 17 // // 為什么呢?因為這個相當于是my線程被調用了兩次。而不是兩個線程啟動。 18 // my.start(); 19 20 // 創建兩個線程對象 21 MyThread my1 = new MyThread(); 22 MyThread my2 = new MyThread(); 23 24 my1.start(); 25 my2.start(); 26 } 27 } 28 public class MyThread extends Thread { 29 30 @Override 31 public void run() { 32 // 自己寫代碼 33 // System.out.println("好好學習,天天向上"); 34 // 一般來說,被線程執行的代碼肯定是比較耗時的。所以我們用循環改進 35 for (int x = 0; x < 200; x++) { 36 System.out.println(x); 37 } 38 } 39 40 } View Code?
轉載于:https://www.cnblogs.com/lanjianhappy/p/6383913.html
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的java笔记之线程方式1启动线程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 刑侦破案电视剧排行榜前十名(震惊中国的真
- 下一篇: jQuery progression 表