国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

向線程傳遞參數的兩種基本方法

2019-11-10 20:22:15
字體:
來源:轉載
供稿:網友

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

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

一、通過構造方法傳遞數據

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

package mythread;public class MyThread1 extends Thread{ PRivate String name; public MyThread1(String name) { this.name = name; } public void run() { System.out.println("hello " + name); } public static void main(String[] args) { Thread thread = new MyThread1("world"); thread.start(); }}

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

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

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

package mythread;public class MyThread2 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) { MyThread2 myThread = new MyThread2(); myThread.setName("world"); Thread thread = new Thread(myThread); thread.start(); }}

推薦一下使用第2種,把參數放在那么中;

http://www.cnblogs.com/warioland/archive/2011/11/01/2231070.html


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 蛟河市| 阿拉善盟| 金塔县| 龙井市| 镶黄旗| 菏泽市| 尉犁县| 酉阳| 乌兰浩特市| 成武县| 灵寿县| 宣威市| 龙海市| 和田市| 南陵县| 和静县| 宁晋县| 贵溪市| 呼和浩特市| 莱西市| 什邡市| 洱源县| 西乌| 齐齐哈尔市| 仁寿县| 和平县| 海丰县| 新巴尔虎右旗| 芦山县| 安庆市| 石渠县| 桓台县| 彭阳县| 安化县| 赣榆县| 夹江县| 南召县| 广宁县| 桂阳县| 灌云县| 泸定县|