㈠ 為什麼java中實現多線程的方式有兩種
java創建線程的方式有三種
第一種是繼承Thread類 實現方法run() 不可以拋異常內 無返回值
第二種是實現Runnable介面 實現方法容run() 不可以拋異常 無返回值
第三種是實現Callable<T>介面,介面中要覆蓋的方法是 public <T> call() 注意:此方法可以拋異常,而前兩種不能 而且此方法可以有返回值
第三種如何運行呢 Callable介面在util.concurrent包中,由線程池提交
import java.util.concurrent.*;
ExecutorService e = Executors.newFixedThreadPool(10); 參數表示最多可以運行幾個線程
e.submit(); 這個裡面參數傳 實現Callable介面那個類的對象
㈡ Java中,請問在JAVA中實現線程有哪兩種方式
1.繼承Thread類
2.實現介面 Runnable
都可以的啊
㈢ java多線程,如何實現兩個不同的方法
class test1 implements Runnable{
@Override
public void run() {
// TODO Auto-generated method stub
}
public int add(int i){
return i+1;
}
public int del(int j){
return j-1;
}
}
class test2 extends Thread{
@Override
public void run() {
// TODO Auto-generated method stub
}
public int add(int i){
return i+1;
}
public int del(int j){
return j-1;
}
}
㈣ java多線程都有幾種方式實現
有三種:
(1)繼承Thread類,重寫run函數
創建:
class xx extends Thread{
public void run(){
Thread.sleep(1000) //線程休眠1000毫秒,sleep使線程進入Block狀態,並釋放資源
}}
開啟線程:
對象.start() //啟動線程,run函數運行
(2)實現Runnable介面,重寫run函數
開啟線程:
Thread t = new Thread(對象) //創建線程對象
t.start()
(3)實現Callable介面,重寫call函數
Callable是類似於Runnable的介面,實現Callable介面的類和實現Runnable的類都是可被其它線程執行的任務。
Callable和Runnable有幾點不同:
①Callable規定的方法是call(),而Runnable規定的方法是run().
②Callable的任務執行後可返回值,而Runnable的任務是不能返回值的
③call()方法可拋出異常,而run()方法是不能拋出異常的。
④運行Callable任務可拿到一個Future對象,Future表示非同步計算的結果。它提供了檢查計算是否完成的方法,以等
待計算的完成,並檢索計算的結果.通過Future對象可了解任務執行情況,可取消任務的執行,還可獲取任務執行的結果
㈤ java有幾種實現線程的方式
java創建線程的方式有三種
第一種是繼承Thread類 實現方法run() 不可以回拋異常 無返回值答
第二種是實現Runnable介面 實現方法run() 不可以拋異常 無返回值
第三種是實現Callable<T>介面,介面中要覆蓋的方法是 public <T> call() 注意:此方法可以拋異常,而前兩種不能 而且此方法可以有返回值
第三種如何運行呢 Callable介面在util.concurrent包中,由線程池提交
import java.util.concurrent.*;
ExecutorService e = Executors.newFixedThreadPool(10); 參數表示最多可以運行幾個線程
e.submit(); 這個裡面參數傳 實現Callable介面那個類的對象
㈥ java實現線程的兩種方法有什麼區別
為什麼Java要提供兩種方法來創建線程呢?它們都有哪些區別?相比而言,哪一種方法更好呢?
在Java中,類僅支持單繼承,也就是說,當定義一個新的類的時候,它只能擴展一個外部類.這樣,如果創建自定義線程類的時候是通過擴展 Thread類的方法來實現的,那麼這個自定義類就不能再去擴展其他的類,也就無法實現更加復雜的功能。因此,如果自定義類必須擴展其他的類,那麼就可以使用實現Runnable介面的方法來定義該類為線程類,這樣就可以避免Java單繼承所帶來的局限性。
還有一點最重要的就是使用實現Runnable介面的方式創建的線程可以處理同一資源,從而實現資源的共享.
1、通過擴展Thread類來創建多線程
假設一個影院有三個售票口,分別用於向兒童、成人和老人售票。影院為每個窗口放有100張電影票,分別是兒童票、成人票和老人票。三個窗口需要同時賣票,而現在只有一個售票員,這個售票員就相當於一個CPU,三個窗口就相當於三個線程。通過程序來看一看是如何創建這三個線程的。
[html]view plain
{
privateintticket=100;//每個線程都擁有100張票
publicvoidrun(){
while(ticket>0){
System.out.println(ticket--+"issaledby"+Thread.currentThread());
}
}
}
結果正如前面分析的那樣,程序在內存中僅創建了一個資源,而新建的三個線程都是基於訪問這同一資源的,並且由於每個線程上所運行的是相同的代碼,因此它們執行的功能也是相同的。
可見,如果現實問題中要求必須創建多個線程來執行同一任務,而且這多個線程之間還將共享同一個資源,那麼就可以使用實現Runnable介面的方式來創建多線程程序。而這一功能通過擴展Thread類是無法實現的
㈦ java實現多線程的兩種方法
Thread t1=new Thread(){
public void run(){
System.out.println("第一種方法");
}
};
t1.start();
Thread t2=new Thread(new Runnable() {
public void run() {
System.out.println("第二種方法,可實專現同類下各線屬程數據共享");
}
});
t2.start();
㈧ 1. 寫出用Java編寫多線程程序的兩種常用方法
1、繼承Thread,然後生成對象
2、用類A實現runable介面,然後用你實現runnable的類A,生成Thread對象 Thread(A對象);
API 上說明如下:
創建新執行線程有兩種方法。一種方法是將類聲明為 Thread 的子類。該子類應重寫 Thread 類的
run 方法。接下來可以分配並啟動該子類的實例。例如,計算大於某一規定值的質數的線程可以寫成:
classPrimeThreadextendsThread{
longminPrime;
PrimeThread(longminPrime){
this.minPrime=minPrime;
}
publicvoidrun(){
//
...
}
}
然後,下列代碼會創建並啟動一個線程:
PrimeThreadp=newPrimeThread(143);
p.start();
創建線程的另一種方法是聲明實現 Runnable 介面的類。該類然後實現 run
方法。然後可以分配該類的實例,在創建 Thread 時作為一個參數來傳遞並啟動。採用這種風格的同一個例子如下所示:
implementsRunnable{
longminPrime;
PrimeRun(longminPrime){
this.minPrime=minPrime;
}
publicvoidrun(){
//
...
}
}
然後,下列代碼會創建並啟動一個線程:
rimeRunp=newPrimeRun(143);
newThread(p).start();
㈨ java多線程有幾種實現方法
java中多線程的實現方法有兩種:
1.直接繼承thread類;
2.實現runnable介面同步內的實現方法容有五種:1.同步方法;2.同步代碼塊;3.使用特殊域變數(volatile)實現線程同步;4.使用重入鎖實現線程同步;5.使用局部變數實現線程同步
㈩ java中創建線程的兩種方式有什麼區別
一種是繼承 Thread 類,一種是 實現Runnable 介面,需要重寫或者實現 run()方法。
沒啥區別,因專為java是單繼承屬的,所以不可能讓所有的類都繼承Thread類,所以必須有這個Runnable 介面。
一般來說編程都會去 實現Runnble 介面,而不會採用繼承Thread。