When the join method of another thread is called in the first thread, the thread is blocked until the end of the other thread.
For example
1 using System;
2
3 namespace TestThreadJoin
4 {
5 class Program
6 {
7 static void Main ()
8 {
9 System. Threading. Thread x = new System. Threading. Thread (new System. Threading. ThreadStart (f1 ));
10 x. Start ();
11 Console. WriteLine ("This is Main. {0}", 1 );
12 x. Join ();
13 Console. WriteLine ("This is Main. {0}", 2 );
14 Console. ReadLine ();
15}
16 static void f1 ()
17 {
18 System. Threading. Thread y = new System. Threading. Thread (new System. Threading. ThreadStart (f2 ));
19 y. Start ();
20 y. Join ();
21 Console. WriteLine ("This is F1. {0}", 1 );
22}
23
24 static void f2 ()
25 {
26 Console. WriteLine ("This is F2. {0}", 1 );
27}
28}
29}
There are three threads processing (including the main thread). You can check the execution result.
Result:
This is Main.1
This is F2.1
This is F1.1
This is Main.2
If: Comment // x. Join ();
Result:
This is Main.1
This is Main.2
This is F2.1
This is F1.1