導航:首頁 > 編程語言 > java線程傳參數

java線程傳參數

發布時間:2023-05-26 04:10:15

『壹』 java中如何給Runnable線程傳參

擦,你在Runnable實現類中定義一個有參數的方法,然後run()方法去調用該方法不就好了
不就相版當於run()方法傳了參權數,
執行方法是在線程的棧中壓入方法幀,所以不存線程安全問題,速度給分
簡單的很呵呵。

『貳』 Java向線程傳遞數據的三種方法

在傳統的同步開發模式下 當我們調用一個函數時 通過這個函數的參數將數據傳入 並通過這個函數的返回值來返回最終的計算結果 但在多線程的非同步開發模式下 數據的傳遞和返回和同步開發模式有很大的區別 由於線程的運行和結束是不可預蘆遲料的 因此 在傳遞和返回數據時就無法象函數一樣通過函數參數和return語句來返回數據 本文就以上原因介紹了幾種用於向線程傳遞數據的方法 在下一篇文章中將介紹從線程中返回數據的方法

欲先取之 必先予之 一般在使用線程時都需要有一些初始化數據 然後線程利用這些數據進行加工處理 並返回結果 在這個過程中最先要做的就是向線程中傳遞數據

一 通過構造方法傳遞數據

在創建線程時 必須要建立一個Thread類的或其子類的實例 因此 我們不難想到在調用start方法之前通過線程類的構造方法將數據傳入線程 並將傳入的數據使用類變數保存起來 以便線程使用(其實就是在run方法中使用) 下面的代碼演示了如何通過構造方法來傳遞數據

package mythread;

public class MyThread extends Thread

{

private String name;

public MyThread (String name)

{

this name = name;

}

public void run()

{

System out println( hello + name);

}

public static void main(String[] args)

{

Thread thread = new MyThread ( world );

thread start();

}

}

由於這種方法是在創建線程對象的同時傳遞數據的 因此 在線程運行之前這些數據就就已經到位了 這樣就不會造成數據在線程運行後才傳入的現象 如果要傳遞更復雜的數據 可以使用集合 類等數據結構 使用構造方法來傳遞數據雖然比較安全 但如果要傳遞的數據比較多時 就會造成很多不便 由於Java沒有默認參數 要想實現類似默認參數的效果 就得使用重載 這樣不但使構造方法本身過於復雜 又會使構造方法在數量上大增 因此 要想避免這種情況 就得通過類方法或類變數來傳遞數據

二 通過變數和方法傳遞數據

向對象中傳入數據一般有兩次機會 第一次機會是在建立對象時通過構造方法將數據傳入 另外一次機會就是在類中定義一系列的public的方法或變數(也可稱之譽裂為欄位) 然後在建立完對象後 通過對象實例逐個賦值 下面的代碼是對MyThread 類的改版 使用了一個setName方法來設置name變數

package mythread;

public class MyThread implements Runnable

{

private String name;

public void setName(String name)

{

this name = name;

}

public void run()

{

System out println( hello + name);

}

public static void main(String[] args)

{

MyThread myThread = new MyThread ();

myThread setName( world );

Thread thread = new Thread(myThread);

thread start();

}

}

三 通過回調函數傳遞數據

上面討論的兩種向慶嘩閉線程中傳遞數據的方法是最常用的 但這兩種方法都是main方法中主動將數據傳入線程類的 這對於線程來說 是被動接收這些數據的 然而 在有些應用中需要在線程運行的過程中動態地獲取數據 如在下面代碼的run方法中產生了 個隨機數 然後通過Work類的process方法求這三個隨機數的和 並通過Data類的value將結果返回 從這個例子可以看出 在返回value之前 必須要得到三個隨機數 也就是說 這個value是無法事先就傳入線程類的

package mythread;

class Data

{

public int value = ;

}

class Work

{

public void process(Data data Integer numbers)

{

for (int n : numbers)

{

data value += n;

}

}

}

public class MyThread extends Thread

{

private Work work;

public MyThread (Work work)

{

this work = work;

}

public void run()

{

java util Random random = new java util Random();

Data data = new Data();

int n = random nextInt( );

int n = random nextInt( );

int n = random nextInt( );

work process(data n n n ); // 使用回調函數

System out println(String valueOf(n ) + + + String valueOf(n ) + +

+ String valueOf(n ) + = + data value);

}

public static void main(String[] args)

{

Thread thread = new MyThread (new Work());

thread start();

}

}

lishixin/Article/program/Java/hx/201311/26623

『叄』 java線程傳值的問題

把那些對象類型的變數定義為 static 類型

或者,有一個線程間傳值得方法,管道技術,不知道你有沒有接觸這方簡尺面的內容:
Java中利用管道實現線程間的通訊
管道(pipe)流搭咐舉是一種特殊的流,用於在不同線程(threads)間直接傳送數據。一個線程發送數據到輸出管道,另知碧一個線程從輸入管道中讀數據。通過使用管道,實現不同線程間的通訊。
你可以搜艘縣官的內容,相信對你有幫助

『肆』 ANDROID,JAVA編程,怎樣才能傳遞參數給線程

你是想說重載?

『伍』 JAVA 多線程傳參問題,為神馬報空指針錯誤

public Test2(Work2 work2) {
this.work=work;
}
這個拆信賣旅逗寫錯坦梁了吧,this.work = work2;

『陸』 java 兩個子線程怎麼傳值線程傳值

用管道可能你不太熟悉,也可以用一個折中辦法:這兩個線程如果出自一個母類體生成並.start的話,可以在母類體中設置一個全局的數組變數,把母類體當成傳輸中介,就可以了。一定能傳到。希望能對你有幫助。

『柒』 java 多線程死循環怎麼動態傳參急!

用繼承的方式實來現Thread類,取名自MyThread,在MyThread裡面加一個屬性 private Thread otherThread;並且給get,set方法.
在run方法裡面的死循環中判斷,if(otherThread!=null){取你要的參數};
這樣一來,在new完thread1和thread2之後,調用thread2.setOtherThread(thread1);
然後再去start.
當然,還要給MyThread加一些屬性存放你要傳遞的參數,在thread1的死循環里操作這些屬性.

『捌』 Java多線程編程,怎樣實現線程間數據的傳遞

可以用Scoket套接字讓伺服器和客戶端建立連接
可以根據Scoket對象的getInputStream()和getOutputStream()獲得輸入輸出流
再往流裡面寫信息
就實現了簡單的數據傳遞
當然等待數據
的時候會有阻塞現象
所以使用線程來保證數據不會因為等待而阻塞

『玖』 JAVA傳參的問題 如何讓多個線程可以調用一個參數

methodA() 要變成 methodA(object xxx) { int i = (int)xxx; } Thread的委託有2個重載,一個是不帶參數,另一個是帶object參數,你還可以: methodA(object xxx) { objecct[] xx = (objecct[])xxx;// 這樣是專傳遞屬多個參數 }

『拾』 java runnable線程如何傳參

Runnable裡面沒有傳參函數,所以得自己造一個

0.自定義一個介面,繼承Runnable,新增一個傳參方法

{
publicMyRunnablesetParam(String...param);
}
  1. 實現這個自定義介面

MyRunnablesendMessage=newMyRunnable(){
Stringmessage;
@Override
publicMyRunnablesetParam(String...param){
message=param[0];
returnthis;
}

@Override
publicvoidrun(){
sendMessage(message);
}
};

2.初始化線程池,運行Runnable

=Executors.newCachedThreadPool();
cachedThreadPool.execute(sendMessage.setParam("Iamservice"));

如上所示,線程池調用的一個runnable實例,這個runnable實例傳入了一個字元串參數

閱讀全文

與java線程傳參數相關的資料

熱點內容
網路載入視頻失敗是怎麼回事 瀏覽:805
傳奇賬號在哪個文件夾里 瀏覽:346
百度app在哪裡安裝 瀏覽:587
如何設置路由器網路不斷網 瀏覽:471
傳到qq群里的文件怎麼刪除 瀏覽:861
索尼安卓71更新日誌 瀏覽:234
怎麼找手機里的垃圾app 瀏覽:540
2015藍橋杯代碼填空 瀏覽:698
安卓資料庫dbexecSQL 瀏覽:227
doc重命名文件格式 瀏覽:728
getscreen截圖工具下載 瀏覽:719
共識數據是什麼時候開始的 瀏覽:96
數碼管顯示電壓程序 瀏覽:479
資料庫文件有哪個 瀏覽:543
途強儲存在哪個文件夾 瀏覽:172
如何恢復被覆蓋文件 瀏覽:611
iphone5用哪個版本最好 瀏覽:327
extjsgrid禁用 瀏覽:426
如何查找國外論文的編程代碼 瀏覽:366
暗金顏色代碼 瀏覽:789

友情鏈接