麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

向線程傳遞參數(shù)的兩種基本方法

2019-11-10 20:22:15
字體:
供稿:網(wǎng)友

在傳統(tǒng)的同步開發(fā)模式下,當(dāng)我們調(diào)用一個函數(shù)時(shí),通過這個函數(shù)的參數(shù)將數(shù)據(jù)傳入,并通過這個函數(shù)的返回值來返回最終的計(jì)算結(jié)果。但在多線程的異步開發(fā)模式下,數(shù)據(jù)的傳遞和返回和同步開發(fā)模式有很大的區(qū)別。由于線程的運(yùn)行和結(jié)束是不可預(yù)料的,因此,在傳遞和返回?cái)?shù)據(jù)時(shí)就無法象函數(shù)一樣通過函數(shù)參數(shù)和return語句來返回?cái)?shù)據(jù)。本文就以上原因介紹了幾種用于向線程傳遞數(shù)據(jù)的方法。

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

一、通過構(gòu)造方法傳遞數(shù)據(jù)

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

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(); }}

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

二、通過變量和方法傳遞數(shù)據(jù)

向?qū)ο笾袀魅霐?shù)據(jù)一般有兩次機(jī)會,第一次機(jī)會是在建立對象時(shí)通過構(gòu)造方法將數(shù)據(jù)傳入,另外一次機(jī)會就是在類中定義一系列的public的方法或變量(也可稱之為字段)。然后在建立完對象后,通過對象實(shí)例逐個賦值。下面的代碼是對MyThread1類的改版,使用了一個setName方法來設(shè)置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種,把參數(shù)放在那么中;

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


發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 国产一区二区免费在线观看视频 | 毛片电影网址 | 中文字幕在线永久 | xxxx69hd一hd | www.狠狠操.com | 免费观看视频在线观看 | 无码av女优| 欧美中文字幕一区二区 | 免费欧美一级视频 | 羞羞答答视频 | 日韩视频一| 国产九九热视频 | 欧美性受xxxx人人本视频 | 久久亚洲国产午夜精品理论片 | 最新黄色电影网站 | 视频二区国产 | 久久精品亚洲成在人线av网址 | 欧美激情天堂 | 一级在线观看视频 | 久久久久久久99 | 超碰一区 | 欧美三级美国一级 | 精品国产一区二区三区在线观看 | 国产免费一区二区三区在线能观看 | 超污视频在线看 | 久久精品一区二区三 | 高清av免费 | 一区二区视 | 亚洲第一精品在线 | 深夜精品福利 | a视频在线播放 | 久久久久一本一区二区青青蜜月 | 国产人成精品一区二区三 | 国产精品一区二区三区在线播放 | 免费人成在线播放 | 久久人人做 | 操操日日| 久久免费视频5 | 久久久久久久高清 | 国产高潮国产高潮久久久91 | 久久久精品视频免费看 |