執行緒的阻塞
當一個執行緒呼叫另一個執行緒時,在被呼叫的執行緒中呼叫join()方法,可以阻塞呼叫執行緒,直至某個執行緒終止時為止。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
namespace Test
{
class TestThread
{
private static void ThreadFuncOne()
{
for (int i = 0; i < 10; i++)
{
Console.WriteLine(Thread.CurrentThread.Name + " i = " + i);
}
Console.WriteLine(Thread.CurrentThread.Name + " has finished");
}
static void Main(string[] args)
{
Thread.CurrentThread.Name = "MainThread";
Thread newThread = new Thread(new ThreadStart(TestThread.ThreadFuncOne));
newThread.Name = "NewThread";
for (int j = 0; j < 20; j++)
{
if (j == 10)
{
newThread.Start();
newThread.Join();
}
else
{
Console.WriteLine(Thread.CurrentThread.Name + " j = " + j);
}
}
Console.Read();
}
}
}
using System;
using System.Collections.Generic;
using System.Threading;
using System.Linq;
using System.Text;
namespace threadJoing2
{
class SubThread
{
int number;
public Thread workThrd;
public SubThread(string name)
{
number = 0;
workThrd = new Thread(this.working);
workThrd.Name = name;
workThrd.Start();
}
public void working()
{
Console.WriteLine("子執行緒{0}開始執行",workThrd.Name);
while (number < 3)
{
Thread.Sleep(1000);
Console.WriteLine("子執行緒:{0},現在數到{1}",workThrd.Name,number);
number++;
}
Console.WriteLine("子執行緒{0}結束",workThrd.Name);
}
}
class Program
{
static void Main(string[] args)
{
Console.WriteLine("主執行緒開始:");
SubThread subT1 = new SubThread("subThreadOne");
SubThread subT2 = new SubThread("subThreadTwo");
SubThread subT3 = new SubThread("subThreadThree");
subT1.workThrd.Join();
subT2.workThrd.Join();
subT3.workThrd.Join();
Console.WriteLine("主執行緒結束");
Console.ReadLine();
}
}
}
相關文章
- 非同步/同步,阻塞/非阻塞,單執行緒/多執行緒概念梳理非同步執行緒
- 執行緒的讓步與阻塞執行緒
- 伺服器模型——從單執行緒阻塞到多執行緒非阻塞(中)伺服器模型執行緒
- 伺服器模型——從單執行緒阻塞到多執行緒非阻塞(下)伺服器模型執行緒
- 伺服器模型——從單執行緒阻塞到多執行緒非阻塞(上)伺服器模型執行緒
- java多執行緒:執行緒池原理、阻塞佇列Java執行緒佇列
- 非同步與執行緒阻塞非同步執行緒
- 執行緒池的阻塞佇列的理解執行緒佇列
- 非同步阻塞,Manager模組,執行緒非同步執行緒
- mysql 5.7 執行緒阻塞處理MySql執行緒
- 程式執行緒、同步非同步、阻塞非阻塞、併發並行執行緒非同步並行
- IIS減少工作執行緒阻塞的方法執行緒
- 那些年搞不懂的多執行緒、同步非同步及阻塞和非阻塞(一)---多執行緒簡介執行緒非同步
- 對執行緒、協程和同步非同步、阻塞非阻塞的理解執行緒非同步
- 單執行緒-非阻塞-長連結執行緒
- 請教:java.exe執行緒阻塞Java執行緒
- 聊聊執行緒與程式 & 阻塞與非阻塞 & 同步與非同步執行緒非同步
- 併發-0-同步/非同步/阻塞/非阻塞/程式/執行緒非同步執行緒
- 多執行緒,執行緒類三種方式,執行緒排程,執行緒同步,死鎖,執行緒間的通訊,阻塞佇列,wait和sleep區別?執行緒佇列AI
- java效能調優記錄(執行緒阻塞)Java執行緒
- Java阻塞佇列執行緒集控制的實現Java佇列執行緒
- 程式與執行緒、同步與非同步、阻塞與非阻塞、併發與並行執行緒非同步並行
- Java執行緒(篇外篇):阻塞佇列BlockingQueueJava執行緒佇列BloC
- Java 執行緒中斷(interrupt)與阻塞 (park)的區別Java執行緒
- suging閒談-netty 的非同步非阻塞IO執行緒與業務執行緒分離Netty非同步執行緒
- 探討阻塞佇列和執行緒池原始碼佇列執行緒原始碼
- Java BlockingQueue 阻塞佇列[用於多執行緒]JavaBloC佇列執行緒
- 深入淺出Java多執行緒(十三):阻塞佇列Java執行緒佇列
- 從 JDK 原始碼角度看執行緒的阻塞和喚醒JDK原始碼執行緒
- 最全java多執行緒總結3——瞭解阻塞佇列和執行緒安全集合不Java執行緒佇列
- 由於Spring的單態引起的執行緒阻塞的問題Spring執行緒
- java執行緒的五大狀態,阻塞狀態詳解Java執行緒
- 多執行緒與併發-----條件阻塞Condition的應用執行緒
- java多執行緒8:阻塞佇列與Fork/Join框架Java執行緒佇列框架
- 原始碼剖析ThreadPoolExecutor執行緒池及阻塞佇列原始碼thread執行緒佇列
- 那些年搞不懂的多執行緒、同步非同步及阻塞和非阻塞(二)---概念區分執行緒非同步
- 執行緒、開啟執行緒的兩種方式、執行緒下的Join方法、守護執行緒執行緒
- java 執行緒池執行緒忙碌且阻塞佇列也滿了時給一個拒接的詳細報告Java執行緒佇列