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