日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > C# >内容正文

C#

C#,JAVA各版本之Thread.join()详解

發布時間:2024/9/20 C# 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C#,JAVA各版本之Thread.join()详解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

????? join方法的功能就是使異步執行的線程變成同步執行。也就是說,當調用線程實例的start方法后,這個方法會立即返回,如果在調用start方法后后需要使用一個由這個線程計算得到的值,就必須使用join方法。如果不使用join方法,就不能保證當執行到start方法后面的某條語句時,這個線程一定會執行完。而使用join方法后,直到這個線程退出,程序才會往下執行。下面的代碼演示了2種語言中多線程.join的用法。

????? JAVA版本:??

package com.cn.net;public class test {/*** @param args* @throws InterruptedException */public static void main(String[] args) throws InterruptedException {// TODO Auto-generated method stub//線程Afinal Thread ThreadA = new Thread(new Runnable() {@Overridepublic void run() {for (int i = 0; i < 10; i++){System.out.println("A : " );if (i == 9){break;}try {Thread.sleep(1000);} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}});Thread ThreadB = new Thread(new Runnable() {@Overridepublic void run() {for (int i = 0; i < 5; i++){System.out.println("B : ");if (i == 4){break;}try {Thread.sleep(1000);} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}}// try { // ThreadA.join();//在這里插入線程A // } catch (InterruptedException e) { // // TODO Auto-generated catch block // e.printStackTrace(); // }for (int i = 0; i < 5; i++){System.out.println("C : " );if (i == 4){break;}try {Thread.sleep(1000);} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}});ThreadA.start();ThreadB.start();}
}

  C#版本:

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading;namespace Mutiprocess {class Program{static void Main(string[] args){//線程AThread ThreadA = new Thread(delegate(){for (int i = 0; i < 10; i++){Console.WriteLine("A : ");if (i == 9){break;}Thread.Sleep(1000);}});//線程BThread ThreadB = new Thread(delegate(){for (int i = 0; i < 5; i++){Console.WriteLine("B : ");if (i == 4){break;}Thread.Sleep(1000);}ThreadA.Join();//在這里插入線程Afor (int i = 0; i < 5; i++){Console.WriteLine("C : ");if (i == 4){break;}Thread.Sleep(1000);}});ThreadA.Start();ThreadB.Start();// 前5秒 A B交替出現,然后A出現5次,C出現5次。//如果注釋掉ThreadA.Join(),那么結果是前5秒AB 交替出現 后5秒AC交替出現。//這里我就不再羅嗦了。還是那樣線程B中join了線程A只有A執行結束,才可以繼續執行線程B中剩下的代碼。//join其實就是使異步執行線程轉為同步執行。}} }

  2中版本的執行(可能)結果是(cpu決定):

A :
B :
A :
B :
A :
B :
B :
A :
B :
A :
A :
A :
A :
A :
A :
C :
C :
C :
C :
C :

當把ThreadA.Join()? 注釋掉后的顯示的規則結果是:

A :
B :
A :
B :
A :
B :
A :
B :
A :
B :
C :
A :
C :
A :
C :
A :
C :
A :
C :
A :

?

更多關于多線程的解釋及例子相見

http://developer.51cto.com/art/200906/132331.htm

http://www.cnblogs.com/qinpengming/archive/2012/05/08/2490665.html

?

?

??

?

?

總結

以上是生活随笔為你收集整理的C#,JAVA各版本之Thread.join()详解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。