第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定

關(guān)于runnalbe 和thread 的區(qū)別

兩個都可覆寫run 方法,什么時候一個類需要定義成線程,什么時候需要定義成runnable?這兩者各自的用法和區(qū)別俺沒搞清楚,求指點

正在回答

2 回答

這個等到后邊你學(xué)習(xí)了同步機制就知道了,實現(xiàn)的方式需要一個this關(guān)鍵字,而繼承的時候你在用this的時候,因為創(chuàng)建了多個實例化對象,就不能用this了,涉及到共享數(shù)據(jù).共享數(shù)據(jù)只能有一個.這里給你看個代碼望采納:

package com.atguigu.java;


//使用實現(xiàn)Runnable接口的方式售票

/*

?* 此程序存在線程的安全問題,打印車票時,會出現(xiàn)重票,錯票

?* 1.線程安全問題存在的原因?

?* 由于一個線程在操作共享數(shù)據(jù)過程中,未執(zhí)行完畢的情況下,另外的線程參與進(jìn)來,導(dǎo)致

?* 共享數(shù)據(jù)存在了安全問題

?* 2.如何解決線程的安全問題?

?* 必須讓一個線程操作共享數(shù)據(jù)完畢以后,其他線程才有機會參與共享數(shù)據(jù)的操作.

?*?

?* 3.java如何實現(xiàn)線程的安全,線程的同步機制

?* 方式一:同步代碼塊

?* synchronized(同步監(jiān)視器){

?* //需要被同步的代碼塊(即為操作共享數(shù)據(jù)的代碼)

?* }

?* 1.共享數(shù)據(jù):多個線程共同操作的同一個數(shù)據(jù)(變量)

?* 2.同步監(jiān)視器:由任何一個類的對象來充當(dāng).哪個線程 獲取此監(jiān)視器,誰就執(zhí)行大括號里被

?* ?同步的代碼.俗稱鎖.

?* 要求:所有的線程必須公用同一把鎖!

?* ?注:在實現(xiàn)的方式中,考慮同步的話,可以使用this來充當(dāng),但是在繼承的方式中,慎用this

?* 方法二:同步方法

?*?

?*/

class Window2 implements Runnable {

int ticket = 100;// 共享數(shù)據(jù)

//Object obj = new Object();


public void run() {

while (true) {

synchronized (this) {//this表示當(dāng)前對象,本問題中為w

if (ticket > 0) {

try {

Thread.currentThread().sleep(10);

} catch (InterruptedException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

System.out.println(Thread.currentThread().getName() + "票號為:" + ticket--);

}

}

}

}

}


public class TestWindow2 {

public static void main(String[] args) {

Window2 w1 = new Window2();

Thread t1 = new Thread(w1);

Thread t2 = new Thread(w1);

Thread t3 = new Thread(w1);

t1.setName("窗口1");

t2.setName("窗口2");

t3.setName("窗口3");

t1.start();

t2.start();

t3.start();

}

}


0 回復(fù) 有任何疑惑可以回復(fù)我~

在程序開發(fā)中只要是多線程肯定永遠(yuǎn)以實現(xiàn)Runnable接口為主,因為實現(xiàn)Runnable接口相比繼承Thread類有如下好處:

避免點繼承的局限,一個類可以繼承多個接口。

適合于資源的共享

0 回復(fù) 有任何疑惑可以回復(fù)我~
#1

紅袖侍讀 提問者

老實說這些抽象籠統(tǒng)的概念我也知道,關(guān)鍵是對這些概念的理解不透徹。你說的第一個好處,大概可以理解為假如一個類已經(jīng)繼承了別的類,這時候就無法繼承thread,要實現(xiàn)多線程就只有implements runnable,這是runnable接口比繼承thread靈活的地方。但是第二個更適合資源共享要怎么理解,你能否舉出一個具體的例子加以說明?
2016-06-23 回復(fù) 有任何疑惑可以回復(fù)我~
#2

紅袖侍讀 提問者

在網(wǎng)上搜了很多相關(guān)資料,目前結(jié)論是runnable只具備第一點優(yōu)勢,第二點優(yōu)勢并不存在,網(wǎng)傳說明資源共享的售票例子的寫法是錯誤的,實際上稍作改動thread繼承類一樣可以實現(xiàn)資源的共享
2016-06-23 回復(fù) 有任何疑惑可以回復(fù)我~

舉報

0/150
提交
取消

關(guān)于runnalbe 和thread 的區(qū)別

我要回答 關(guān)注問題
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號