999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

Java語言與C#語言的多線程編程能力和差異

2012-08-15 00:44:25黑龍江吳文慶修雅慧
職業技術 2012年4期
關鍵詞:程序語言方法

黑龍江 吳文慶 修雅慧

Java語言與C#語言的多線程編程能力和差異

黑龍江 吳文慶 修雅慧

Java與C#是現今網絡開發的兩大主要平臺,而多線程編程則是進行并行處理計算中的基礎,本文主要闡述了在Java與C#開發平臺下如何進行多線程編程的方法及注意事項,并且比較和分析兩種開發平臺下進行多線程編程的差異。

多線程;并行處理;Java;C#

從概念上講,線程提供了一種在一個軟件中并行執行代碼的方式——每個線程都“同時”在一個共享的內存空間中執行指令(當然是在一個處理器上,這是通過處于運行狀態的線程的交替執行完成的),因此,每個線程都可以訪問一個程序內的數據結構。由于這種原因,多線程編程的難度就可想而知了,因為一個程序內有許多不同的線程需要安全地共享數據。

一、線程的創建和運行

Java在Java.lang.Thread和Java.lang.Runnable類中提供了大部分的線程功能。創建一個線程非常簡單,就是擴展Thread類,并調用start()。通過創建一個執行Runnable()的類,并將該類作為參數傳遞給Thread(),也可以定義一個線程。

下面這個簡單的Java程序,其中有2個線程同時在從1數到5,并將結果打印出來。

public class ThreadingExample extends Object

public static void main(Stringargs[]){

Thread[]threads=new Thread[2];

for(int count=1;count<=threads.length;count){

threads[count]=new Thread(new Runnable()

{

public void run(){

count();

}}

threads[count].start();

}}

public static void count(){

for(int count=1;count<=5;count)

System.out.print(count””);

}

}

可以使用System.Threading.Thread和System.Threading.ThreadStart兩個類將上述的Java程序轉換為C#語言:

using System.Threading;

public class ThreadingExample:Object{

public static void Main(){

Thread[]threads=new Thread[2];

for(int count=1;count<=threads.Length;count){

threads[count」=new Thread(new ThreadStart(Count));

threads[count].Start();

}

}

public static void Count(){

for(int count=1;count<=5;count)

Console.Write(count””);

}

}

二、線程的使用

Java中存在許多編程人員希望能夠對線程使用的標準操作:例如,測試線程是否存在、加人一個線程直到它死亡、殺死一個線程等。

Java中java.lang.Thread中的方法和C#中System.Threading.Thread對象的對比:

setDaemon(boolean on)方法:IsBackground設置屬性值使一個存在的進程成為一個新線程(如果剩下的所有進程都成了新線程,程序將停止運行)。

isDaemon()方法:IsBackground 獲取屬性,如果該線程是一個后臺線程,則返回真值。

isAlive()方法:IsAlive獲取屬性,如果該線程處于活動狀態,則返回真值。

Interrupt()方法:盡管在Java中這一方法可以用來設置線程的中斷狀態,而且可以用來檢查線程是否被中斷。在C#中沒有相應的方法,對一個沒有處于阻塞狀態的線程執行Interrupt方法將使下一次阻塞調用自動失效。

isInterrupted()方法:n/a,如果該線程處于阻塞狀態,則返回真值。

sleep(long millis) 和 sleep(long millis,intnanos),Sleep (int millisecond Timeout)and Sleep(System.TimeSpan)方法:使正在執行的線程暫停一段給定的時間,或直到它被中斷。這一方法將在Java中將產生一個java.lang.InterruptedException狀態,在C#中將產生System..Threading.ThreadInterruptedException狀態。

Join(),join(long millis)和 join(long millis,intnanos)方法與Java中僅依靠超時設定不同的是,在C#語言中則依據線程停止運行是由于線程死亡(返回真)或是超時(返回假)而返回一個布爾型變量。

Suspend()方法:二者的功能相同。這一方法容易引起死循環,如果一個占有系統關健資源的線程被掛起來,則在這一線程恢復運行之前,其他的線程不能訪問該資源。

Resume()方法:恢復一個被掛起的線程。

Stop()方法,Abort()方法:參見下面的“線程中止”部分。

三、線程的中止

由于能夠在沒有任何征兆的情況下使運行的程序進人一種混亂的狀態,Java中的Thread.stop受到了普遍的反對。根據所調用的stop()方法,一個未經檢查的Java.lang.ThreadDeath錯誤將會破壞正在運行著的程序的棧,隨著它的不斷運行,能夠解除任何被鎖定的對象。由于這些鎖被不分青紅皂白地被打開,由它們所保護的數據就非常可能陷人混亂狀態中。根據當前的Java文檔,推薦的中止一個線程的方法是讓運行的線程檢查一個由其他的線程能夠改變的變量,該變量代表一個“死亡時間”條件。

上述的討論對C#中的Abort方法也適合。根據調用的Abort方法,System.Threading.ThreadAbortException可能會破壞線程的棧,它可能釋放線程保持的一些變量,使處于保護狀態中的數據結構出現不可預測的錯誤。我建議使用與上面所示的相似的方法來通知一個應該死亡的線程。

四、結束語

本文章中重點討論了Java和C#在多線程編程方面的具體實現方法,闡述了兩者實現的不同之處,并實現了Java中多線程編程的常用模式轉換為C#。

[1]Bruce Eckel(陳昊鵬,譯).Java編程思想(第4版)[M].北京:機械工業出版社,2007.

[2]Kathy Sierra,Bert Bates.深入淺出Java[M].影印版·南京:東南大學出版社,2005.

[3]Cay S.Hoistmann,Gary cornell(陳昊鵬,王浩,姚建平,等譯).Java 2核心技術[M].北京:機械工業出版社,2006.

(編輯 李艷華)

(作者單位:吳文慶,齊齊哈爾工程學院;修雅慧,齊齊哈爾醫學院)

猜你喜歡
程序語言方法
語言是刀
文苑(2020年4期)2020-05-30 12:35:30
試論我國未決羈押程序的立法完善
人大建設(2019年12期)2019-05-21 02:55:44
讓語言描寫搖曳多姿
“程序猿”的生活什么樣
英國與歐盟正式啟動“離婚”程序程序
環球時報(2017-03-30)2017-03-30 06:44:45
累積動態分析下的同聲傳譯語言壓縮
可能是方法不對
用對方法才能瘦
Coco薇(2016年2期)2016-03-22 02:42:52
創衛暗訪程序有待改進
中國衛生(2015年3期)2015-11-19 02:53:32
四大方法 教你不再“坐以待病”!
Coco薇(2015年1期)2015-08-13 02:47:34
主站蜘蛛池模板: 欧美成人午夜影院| 精品国产aⅴ一区二区三区| 日本欧美视频在线观看| 精品国产www| 无码国内精品人妻少妇蜜桃视频| 99热这里都是国产精品| 亚洲精品日产AⅤ| 久久国产亚洲偷自| 久久福利片| 91精品国产丝袜| 国产综合色在线视频播放线视 | 在线播放国产99re| 国产乱人免费视频| 久久网欧美| 九九热精品在线视频| 色悠久久久| 99热免费在线| 亚洲天堂久久| 亚洲中文精品久久久久久不卡| 日韩欧美国产中文| 亚洲自偷自拍另类小说| 国产成人精品亚洲日本对白优播| 国产精品欧美在线观看| 日韩中文无码av超清| 中文字幕无码av专区久久| 亚洲无码高清视频在线观看| 天天视频在线91频| 好久久免费视频高清| 伊人色在线视频| 久久国产精品夜色| 欧美日韩国产成人在线观看| 亚洲毛片在线看| 狠狠色噜噜狠狠狠狠色综合久| 性色一区| 成人午夜网址| 91亚瑟视频| 欧美一级片在线| 99在线视频网站| 99视频在线观看免费| 国产手机在线观看| 欧美不卡二区| 色综合手机在线| 午夜精品福利影院| 伊人久久福利中文字幕| 精品久久久久成人码免费动漫| 久久毛片网| 国产精品浪潮Av| 欧美亚洲一区二区三区导航| 亚洲小视频网站| 亚洲高清中文字幕| 日韩人妻无码制服丝袜视频| 精品撒尿视频一区二区三区| 国产成人一区免费观看| 亚洲一区毛片| 久久午夜影院| 免费国产不卡午夜福在线观看| 亚洲熟女中文字幕男人总站| 亚洲精品国产自在现线最新| 欧美激情成人网| 91小视频在线观看免费版高清| 在线免费观看AV| 性视频一区| 欧美激情二区三区| 国产精品va免费视频| 午夜影院a级片| 国产成人精品第一区二区| 亚洲欧洲国产成人综合不卡| 精品视频在线一区| 国产九九精品视频| 毛片免费视频| 麻豆AV网站免费进入| 天堂av高清一区二区三区| 99国产精品免费观看视频| 国产一区二区丝袜高跟鞋| 色爽网免费视频| 国产精品视频导航| 欧洲在线免费视频| lhav亚洲精品| 色香蕉网站| 久久国产成人精品国产成人亚洲 | 国产高清无码第一十页在线观看| 国产国模一区二区三区四区|