啟動一個線程主要用什么方法 c#task可以啟動多少個線程?
c#task可以啟動多少個線程?一個進程可以再開啟的線程受用下內(nèi)存限制,要是是32位的機器,那你設置為一個進程有2G的用些內(nèi)存,而每個線程設置為講1M的??臻g,所以我那種情況下肯定不行最線程數(shù)在200
c#task可以啟動多少個線程?
一個進程可以再開啟的線程受用下內(nèi)存限制,要是是32位的機器,那你設置為一個進程有2G的用些內(nèi)存,而每個線程設置為講1M的??臻g,所以我那種情況下肯定不行最線程數(shù)在2000多個。一個解決的辦法是創(chuàng)建戰(zhàn)隊線程時減少線程棧的大小又或者可以使用64位的系統(tǒng)。64位系統(tǒng)應該要也可以遺漏掉這個問題了??隙ㄊ躢pu及磁盤速度及物理內(nèi)存的限制。你不可以到達上限值,你的機器應該早就是慢如牛車了。
C#中,怎樣開啟一個線程,檢測程序運行,如果運行成功就跳出,沒的成功就繼續(xù)檢測?
不是太很清楚你的需求,你線程假如不必須停止,在每個線程里都用while(true)之類的死停止循環(huán)就可以了,循環(huán)中假如需要停止一些時間可以用restless之類的來再繼續(xù)一段時間。
如何讓A、B兩個線程依次執(zhí)行?
是對線程并行通信的問題,Java可以提供了幾個方案可供選擇。先定義,定義A、B兩個線程:
方案一:使用Thread類的join方法Thread的join方法是指阻塞主線程,讓當前線程負責執(zhí)行完再讓CPU時間片執(zhí)行主線程。這樣上面定義的A、B兩個線程要讓A負責執(zhí)行完之后再負責執(zhí)行B,只是需要()即可解決。如下:
()
try{
(3000)//這里如何填寫的超時時間可以省略,詳細意義可一一去查詢。也可可以使用()
}catch(InterruptedExceptione){
()
}
()
方案二:使用Executors來做任務調(diào)度同時根據(jù)上列定義的A、B兩個線程,要在A不能執(zhí)行完之后再負責執(zhí)行B,線程不紊亂,建議使用Executors類的靜態(tài)動態(tài)方法future一個單線程的隊列進去,將A、B兩個任務放進里面兩次先執(zhí)行。具體代碼如下:
ExecutorServiceexeService()
(A)
(B)
()
方案二比方案一要優(yōu)雅。并且依據(jù)join方法的底層實現(xiàn)程序,建議使用了Thread的wait的framework方法來不能執(zhí)行再等待,所以我原則上也這個可以使用Thread的wait方法來不能執(zhí)行靜靜的等待故此實現(xiàn)程序A、B線程的依次執(zhí)行。但Java官方不個人建議不使用wait、notify方法,就按照官方規(guī)范吧。