亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊(cè) 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫(kù)
最近訪問(wèn)板塊 發(fā)新帖
查看: 5261 | 回復(fù): 1
打印 上一主題 下一主題

Java多線程系列--“基礎(chǔ)篇”01之 常用的實(shí)現(xiàn)多線程的兩種方式 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2015-07-17 14:39 |只看該作者 |倒序?yàn)g覽
本章,我們學(xué)習(xí)“常用的實(shí)現(xiàn)多線程的2種方式”:Thread 和 Runnable。
之所以說(shuō)是常用的,是因?yàn)橥ㄟ^(guò)還可以通過(guò)java.util.concurrent包中的線程池來(lái)實(shí)現(xiàn)多線程。關(guān)于線程池的內(nèi)容,我們以后會(huì)詳細(xì)介紹;現(xiàn)在,先對(duì)的Thread和Runnable進(jìn)行了解。本章內(nèi)容包括:
Thread和Runnable的簡(jiǎn)介
Thread和Runnable的異同點(diǎn)
Thread和Runnable的多線程的示例


Thread和Runnable簡(jiǎn)介
Runnable 是一個(gè)接口,該接口中只包含了一個(gè)run()方法。它的定義如下:
public interface Runnable {    public abstract void run();
}
Runnable的作用,實(shí)現(xiàn)多線程。我們可以定義一個(gè)類(lèi)A實(shí)現(xiàn)Runnable接口;然后,通過(guò)new Thread(new A())等方式新建線程。

Thread 是一個(gè)類(lèi)。Thread本身就實(shí)現(xiàn)了Runnable接口。它的聲明如下:
public class Thread implements Runnable {}
Thread的作用,實(shí)現(xiàn)多線程。

Thread和Runnable的異同點(diǎn)
Thread 和 Runnable 的相同點(diǎn):都是“多線程的實(shí)現(xiàn)方式”。
Thread 和 Runnable 的不同點(diǎn):
Thread 是類(lèi),而Runnable是接口;Thread本身是實(shí)現(xiàn)了Runnable接口的類(lèi)。我們知道“一個(gè)類(lèi)只能有一個(gè)父類(lèi),但是卻能實(shí)現(xiàn)多個(gè)接口”,因此Runnable具有更好的擴(kuò)展性。
此外,Runnable還可以用于“資源的共享”。即,多個(gè)線程都是基于某一個(gè)Runnable對(duì)象建立的,它們會(huì)共享Runnable對(duì)象上的資源。
通常,建議通過(guò)“Runnable”實(shí)現(xiàn)多線程!

Thread和Runnable的多線程示例
1. Thread的多線程示例
下面通過(guò)示例更好的理解Thread和Runnable,借鑒網(wǎng)上一個(gè)例子比較具有說(shuō)服性的例子。


1 // ThreadTest.java 源碼
2 class MyThread extends Thread{   
3     private int ticket=10;   
4     public void run(){
5         for(int i=0;i<20;i++){
6             if(this.ticket>0){
7                 System.out.println(this.getName()+" 賣(mài)票:ticket"+this.ticket--);
8             }
9         }
        
10     }
11 };

12
13 public class ThreadTest {  

14     public static void main(String[] args) {  

15         // 啟動(dòng)3個(gè)線程t1,t2,t3;每個(gè)線程各賣(mài)10張票!

16         MyThread t1=new MyThread();

17         MyThread t2=new MyThread();

18         MyThread t3=new MyThread();

19         t1.start();
        
20         t2.start();
        
21         t3.start();
        
22     }  
   
23 }


運(yùn)行結(jié)果:

Thread-0 賣(mài)票:ticket10
Thread-1 賣(mài)票:ticket10
Thread-2 賣(mài)票:ticket10
Thread-1 賣(mài)票:ticket9
Thread-0 賣(mài)票:ticket9
Thread-1 賣(mài)票:ticket8
Thread-2 賣(mài)票:ticket9
Thread-1 賣(mài)票:ticket7
Thread-0 賣(mài)票:ticket8
Thread-1 賣(mài)票:ticket6
Thread-2 賣(mài)票:ticket8
Thread-1 賣(mài)票:ticket5
Thread-0 賣(mài)票:ticket7
Thread-1 賣(mài)票:ticket4
Thread-2 賣(mài)票:ticket7
Thread-1 賣(mài)票:ticket3
Thread-0 賣(mài)票:ticket6
Thread-1 賣(mài)票:ticket2
Thread-2 賣(mài)票:ticket6
Thread-2 賣(mài)票:ticket5
Thread-2 賣(mài)票:ticket4
Thread-1 賣(mài)票:ticket1
Thread-0 賣(mài)票:ticket5
Thread-2 賣(mài)票:ticket3
Thread-0 賣(mài)票:ticket4
Thread-2 賣(mài)票:ticket2
Thread-0 賣(mài)票:ticket3
Thread-2 賣(mài)票:ticket1
Thread-0 賣(mài)票:ticket2
Thread-0 賣(mài)票:ticket1

結(jié)果說(shuō)明:
(01) MyThread繼承于Thread,它是自定義個(gè)線程。每個(gè)MyThread都會(huì)賣(mài)出10張票。
(02) 主線程main創(chuàng)建并啟動(dòng)3個(gè)MyThread子線程。每個(gè)子線程都各自賣(mài)出了10張票。

2. Runnable的多線程示例
下面,我們對(duì)上面的程序進(jìn)行修改。通過(guò)Runnable實(shí)現(xiàn)一個(gè)接口,從而實(shí)現(xiàn)多線程。

1 // RunnableTest.java 源碼
2 class MyThread implements Runnable{  
3     private int ticket=10;   
4     public void run(){
5         for(int i=0;i<20;i++){
6             if(this.ticket>0){
7                 System.out.println(Thread.currentThread().getName()+" 賣(mài)票:ticket"+this.ticket--);
8             }
9         }
        
10     }
11 };
12
13 public class RunnableTest {  
14     public static void main(String[] args) {
15         MyThread mt=new MyThread();
16
17         // 啟動(dòng)3個(gè)線程t1,t2,t3(它們共用一個(gè)Runnable對(duì)象),這3個(gè)線程一共賣(mài)10張票!
18         Thread t1=new Thread(mt);
19         Thread t2=new Thread(mt);
20         Thread t3=new Thread(mt);
21         t1.start();
22         t2.start();
23         t3.start();
24     }  
25 }

運(yùn)行結(jié)果:

Thread-0 賣(mài)票:ticket10
Thread-2 賣(mài)票:ticket8
Thread-1 賣(mài)票:ticket9
Thread-2 賣(mài)票:ticket6
Thread-0 賣(mài)票:ticket7
Thread-2 賣(mài)票:ticket4
Thread-1 賣(mài)票:ticket5
Thread-2 賣(mài)票:ticket2
Thread-0 賣(mài)票:ticket3
Thread-1 賣(mài)票:ticket1

結(jié)果說(shuō)明:
(01) 和上面“MyThread繼承于Thread”不同;這里的MyThread實(shí)現(xiàn)了Thread接口。
(02) 主線程main創(chuàng)建并啟動(dòng)3個(gè)子線程,而且這3個(gè)子線程都是基于“mt這個(gè)Runnable對(duì)象”而創(chuàng)建的。運(yùn)行結(jié)果是這3個(gè)子線程一共賣(mài)出了10張票。這說(shuō)明它們是共享了MyThread接口的。

在學(xué)習(xí)過(guò)程中遇到任何技術(shù)上的問(wèn)題沒(méi)有及時(shí)解決,推薦一個(gè)不錯(cuò)的微信公眾號(hào):【拓勝科技】會(huì)有專(zhuān)業(yè)的技術(shù)人員為你解決。【拓勝科技】專(zhuān)注于分享最全的編程開(kāi)發(fā)視頻學(xué)習(xí)資料、學(xué)習(xí)經(jīng)驗(yàn)。目前已經(jīng)整理出Java,Android,UID,PHP,iOS等等教學(xué)視頻,

論壇徽章:
59
2015七夕節(jié)徽章
日期:2015-08-24 11:17:25ChinaUnix專(zhuān)家徽章
日期:2015-07-20 09:19:30每周論壇發(fā)貼之星
日期:2015-07-20 09:19:42ChinaUnix元老
日期:2015-07-20 11:04:38榮譽(yù)版主
日期:2015-07-20 11:05:19巳蛇
日期:2015-07-20 11:05:26CU十二周年紀(jì)念徽章
日期:2015-07-20 11:05:27IT運(yùn)維版塊每日發(fā)帖之星
日期:2015-07-20 11:05:34操作系統(tǒng)版塊每日發(fā)帖之星
日期:2015-07-20 11:05:36程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-07-20 11:05:40數(shù)據(jù)庫(kù)技術(shù)版塊每日發(fā)帖之星
日期:2015-07-20 11:05:432015年辭舊歲徽章
日期:2015-07-20 11:05:44
2 [報(bào)告]
發(fā)表于 2015-08-12 13:05 |只看該作者
確實(shí)很基礎(chǔ)。
您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號(hào)-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號(hào):11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專(zhuān)區(qū)
中國(guó)互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過(guò)ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請(qǐng)注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP