日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

java并發編程專題(二)----如何創建并運行java線程

瀏覽:20日期:2022-08-30 09:31:24

實現線程的兩種方式

上一節我們了解了關于線程的一些基本知識,下面我們正式進入多線程的實現環節。實現線程常用的有兩種方式,一種是繼承Thread類,一種是實現Runnable接口。當然還有第三種方式,那就是通過線程池來生成線程,后面我們還會學習,一步一個腳印打好基礎。

Runnable接口:

public interface Runnable { public abstract void run();}

Thread類:

public class Thread implements Runnable { public synchronized void start() { if (threadStatus != 0) throw new IllegalThreadStateException(); group.add(this); boolean started = false; try { start0(); started = true; } finally { try { if (!started) { group.threadStartFailed(this); } } catch (Throwable ignore) { /* do nothing. If start0 threw a Throwable then it will be passed up the call stack */ } } @Override public void run() { if (target != null) { target.run(); } }}

上面為Thread類和Runnable類的源碼,我們可以看到Thread類也是實現了Runnable接口,即Thread是Runnable的實現,那么他們到底在實現多線程上有什么區別呢?Thread和Runnable解析:

(1)Runnable接口:

Runnable接口是java中線程的定義類。所有線程都是通過該接口來實現,該接口中的run()方法為實現方法,即線程所要實現的內容寫入該方法里面,當線程啟動時會調用該方法。在大多數情況下,如果只想重寫run()方法而不重寫其他方法,應使用Runnable接口。

public class ThreadDemo3 { public static void main(String[] args) { //new了兩個線程對象——s1和s2 //其中兩個對象各對應一個內存區域。線程運行過程中運行都是自己內存塊中的數據 Shop1 s1 = new Shop1('小武'); s1.start(); Shop1 s2 = new Shop1('小潘'); s2.start(); /* //實例化了兩個線程對象,所以分配了兩塊內存空間 //執行過程中操作的是自己的內存空間 Shop2 s3 = new Shop2('小武'); s3.run(); Shop2 s4 = new Shop2('小潘'); s4.run(); //實際實例化了兩個線程對象 //所以同樣分配兩個內存空間 Thread t1 = new Thread(new Shop2('小武')); t1.start(); Thread t2 = new Thread(new Shop2('小潘')); t2.start(); */ //創建了兩個線程對象,但是使用的是同一個對象——s6 Shop2 s5 = new Shop2('w'); Shop1 s6 = new Shop1('T'); Thread t3 = new Thread(s6); t3.start(); Thread t4 =new Thread(s6); t4.start(); }}/** * 武大郎賣燒餅(因為業務的拓展,現在可以實現多窗口的出售) * 要求:每天只賣10個 * */class Shop1 extends Thread{ //private int count = 10; //使用靜態變量可以有效的實現資源共享(因為在內存中只有一份count) private static int count = 10; public Shop1(String name) { super(name); } public void run(){ //判斷是否已經賣完 while(count>0){ count--; System.out.println(this.getName() +'賣出了一個燒餅' + ',現在剩余' + count); } }}/** * 使用接口實現上面的代碼 * */class Shop2 implements Runnable{ //私有變量,存儲剩余燒餅的個數 private int count = 10; //存儲當前人的姓名 private String name=''; public Shop2(String name) { this.name = name; } /** * 實現銷售的方法 */ public void run(){ //判斷是否已經賣完 while(count>0){ count--; System.out.println(Thread.currentThread().getId() + '、' + this.name +'賣出了一個燒餅' + ',現在剩余' + count); } }}

(2)Thread類:

Thread類是Runnable接口的實現,jdk給我們提供了一個不用我們去想如何實現線程的方式供我們使用。同樣你在繼承Thread類的時候也需要重寫run()方法來實現你想在線程中實現的內容。

public class Test{ public static void main(String[] args) { //傳統方式——單任務方式 /* SimpleClass sc1 = new SimpleClass(); sc1.say('Mike'); SimpleClass sc2 = new SimpleClass(); sc2.say('Han Meimei'); */ //創建一個線程 ThreadClass tc1 = new ThreadClass('Mike'); //啟動線程 tc1.start(); //創建一個線程 ThreadClass tc2 = new ThreadClass('Han Meimei'); tc2.start(); } } } class SimpleClass{ public void say(String name){ while(true){ System.out.println('Hi,Im ' + name); } } } class ThreadClass extends Thread{ public ThreadClass(String name) { super(name); } /** * 將父類(Thread)的run()方法進行重寫 * 在run()方法中包含了需要執行的代碼 */ public void run(){ while(true){ System.out.println('Hi,Im ' + this.getName() + '|' + this.getId() + '|' + this.getStackTrace()); } } }

Thread類中常用方法:

run():如果該線程時使用獨立的Runnable運行對象構造的,則調用該Runnable對象的run方法。否則,該方法不執行任何操作并返回。sleep(longmillls):在指定的毫秒數內讓當前正在執行的線程休眠(暫停執行),此操作受到系統計時器和調度程序精度和準確性的影響 Stringyield():暫停當前正在執行的線程對象,并執行其他線程 start():使該線程開始運行,java虛擬機再調用該線程的run方法join():等待該線程結束

對比:

上面給出了Thread和Runnable的實現,我們能看到在使用Runnable的方式實現線程的過程中:

Shop1 s6 = new Shop1('T'); Thread t3 = new Thread(s6); t3.start();

即把Runnable對象(實現了Runnable接口的對象)還是塞進了Thread中讓Thread來實現。那么我們可以new 多個Thread來實現同一個Runnbale對象,即實現了資源的共享,比如在售票系統中多名用戶對同一種票的搶購。另一方面,java是單繼承多實現的,如果我們使用Thread的話意味著該類只能繼承Thread,對于程序的擴展不利,而實現Runnbale接口則沒有這個顧慮??紤]程序的健壯性,我們應該盡量使用Runnable來實現我們的線程。

run和start

初學多線程我們總是分不清楚run()方法和start()方法的區別,其實我們再看一下上面Thread類的源碼就不難發現他們的用法是很容易區分的:

run()方法是線程的實現方法,即你需要線程去做什么事情,那么這些實現的內容寫在run()里面,當線程啟動時就會調用run()方法繼而實現run()內部的代碼; start()方法是線程的啟動方法,即如果你new Thread()這樣并不算完。你還得new Thread().start()才算啟動這個線程,啟動完之后線程內部會主動的調用run()方法執行該線程的業務邏輯代碼。

以上就是java并發編程專題(二)----如何創建并運行java線程的詳細內容,更多關于JAVA 創建并運行java線程的資料請關注好吧啦網其它相關文章!

標簽: Java
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
日韩精品第一区| 国内精品福利| 97精品国产福利一区二区三区| 国产精东传媒成人av电影| 免费在线亚洲| 国产一区二区三区不卡视频网站 | 欧美日韩国产一区二区在线观看| 日本视频一区二区| 久久国产精品毛片| 你懂的国产精品| 欧美色图国产精品| 久久精品国内一区二区三区| 国产精品久久久久77777丨| 日韩精品国产欧美| 国产99久久| 亚洲一二av| 精品国产亚洲日本| 免费观看不卡av| 美女精品一区| 国产成人77亚洲精品www| 99精品网站| 国产精品免费不| 99精品视频在线| 欧美1区2区3区| 欧美日韩夜夜| 久久精品高清| 日韩中文字幕无砖| 黄色在线网站噜噜噜| 免费成人av在线播放| 国产精品一区三区在线观看| 给我免费播放日韩视频| 在线亚洲自拍| 久久伊人国产| 视频一区二区不卡| 国产劲爆久久| 自拍自偷一区二区三区| 日韩免费av| 国产午夜一区| 欧美日韩国产免费观看视频| 麻豆国产91在线播放| 好吊一区二区三区| 99pao成人国产永久免费视频 | 日本一区二区免费高清| 99久久精品国产亚洲精品| 日韩中文字幕亚洲一区二区va在线 | 超碰在线99| 欧美亚洲激情| 国产精品啊啊啊| 中文字幕日韩高清在线| 麻豆一区在线| 日本大胆欧美人术艺术动态| 你懂的网址国产 欧美| 亚洲永久精品唐人导航网址| 国产精品久久久亚洲一区| 欧美中文字幕一区二区| 日韩高清中文字幕一区| 欧美aa一级| 天堂久久av| 中文字幕在线官网| av不卡在线| 羞羞答答国产精品www一本 | 中文字幕在线免费观看视频| 久久精品国产亚洲夜色av网站| 国产亚洲精品美女久久| 中文在线资源| 最新国产精品久久久| 久久久久97| 国产伦精品一区二区三区在线播放| 精品国产一区二区三区性色av| 日韩高清一区在线| 爽好多水快深点欧美视频| 国产亚洲欧美日韩精品一区二区三区| 亚洲高清影视| 日韩免费高清| 天堂中文在线播放| 国产成人77亚洲精品www| 国产欧美高清视频在线| 亚洲精品一级二级三级| 奇米色欧美一区二区三区| 偷拍欧美精品| 在线一区免费| 99成人超碰| 播放一区二区| 日韩精品一区二区三区免费观影| 日韩国产综合| 亚洲精品88| 亚洲午夜在线| 国产精品日韩欧美一区| 在线亚洲观看| 日韩av一区二| 麻豆精品av| 国产日韩一区二区三区在线播放| 国产精选久久| 成人综合一区| 亚洲综合国产| 国产精品一区二区三区av| 国产精品一区二区免费福利视频 | 中文字幕中文字幕精品| 91欧美日韩在线| 美女高潮久久久| 国产成人免费av一区二区午夜| 精品视频高潮| 午夜久久福利| 国产日产精品_国产精品毛片| 日韩综合一区| 亚洲一区久久| 亚洲69av| 国际精品欧美精品| 午夜在线精品偷拍| 国产精品综合色区在线观看| 一本大道色婷婷在线| 国产精品日韩久久久| 国产精品高清一区二区| 亚洲电影在线| 国产精品网站在线看| 国产精品xxx在线观看| 国产在线一区不卡| 天堂成人免费av电影一区| 亚洲视频国产| 色婷婷综合网| 日韩国产91| 秋霞影院一区二区三区 | 中文字幕日韩高清在线| 国产成人精品三级高清久久91 | 欧美一区网站| 日本不良网站在线观看| 美腿丝袜亚洲一区| 亚洲激情另类| 国产精品hd| 免费在线看一区| 国产欧洲在线| 国产一区二区亚洲| 国产日本精品| 丝袜脚交一区二区| 久久九九99| 美女久久久久久| 国产日韩三级| 91亚洲精品在看在线观看高清 | 亚洲精品日韩久久| 中文一区二区| 久久高清精品| 国产精品二区不卡| 久久精品高清| 国产欧美一级| 国产精品一页| 国产欧美日本| 国产精品videosex极品| 日本免费一区二区视频| 男女性色大片免费观看一区二区 | 国产精品二区影院| 日韩精品乱码av一区二区| 亚洲午夜久久久久久尤物| 日本精品黄色| 播放一区二区| 欧美精品一卡| 免费日韩视频| 先锋影音久久久| 少妇精品久久久一区二区| 亚洲精品第一| 日韩高清一区二区| 久久精品国产999大香线蕉| 国产日韩欧美一区在线| 97久久亚洲| 国产精品男女| 日韩中文在线电影| 国产精品日韩欧美一区| 综合国产精品| 日韩国产欧美视频| 国产精品xxx| 丰满少妇一区| 欧美在线网站| 日韩av一二三| 精品国产18久久久久久二百| 日韩精品不卡一区二区| 尤物在线精品| 日韩激情精品| 中文一区一区三区高中清不卡免费| 精品欧美激情在线观看| 日本精品一区二区三区在线观看视频 | 国产欧美日韩亚洲一区二区三区| 国产精品玖玖玖在线资源| 亚洲精品在线影院| 免费的成人av| 麻豆成人91精品二区三区| 午夜久久福利| 91综合视频| 日韩精品视频中文字幕| 97精品一区| 日韩av中文在线观看| 亚洲激情中文在线| 国产一区二区三区久久久久久久久| 1000部精品久久久久久久久| 久久国产三级精品| 99tv成人| 免费日韩成人| 午夜久久av| 久久福利影视| 国产综合激情| 久久香蕉网站| 欧美激情视频一区二区三区免费 |