有兩個流,第一個顯示進程表,第二個流考慮它們的計數和顯示。最初推出的第一,那麼第二:如何使線程以正確的順序運行
Thread t1 = new Thread(tmh1.FillTable);
Thread t2 = new Thread(tmh1.GetGeneralInfo);
t1.Start();
t2.Start();
下面是在線程中運行的方法:
public void FillTable()
{
while (true)
{
lock (lockObj)
{
arr.Clear();
arr.AddRange(Process.GetProcesses());
TableFormatter.Line();
TableFormatter.Row("Name", "ID", "threads quantity", "Start time");
TableFormatter.Line();
}
Thread.Sleep(interval);
}
}
public void GetGeneralInfo()
{
while (true)
{
lock (lockObj)
{
Console.WriteLine(arr.Count.ToString());
}
Thread.Sleep(interval);
}
}
和結果:
0
-----------------------------------------------------------------------------
| Name | ID | threads quantity| Start time |
-----------------------------------------------------------------------------
,但應該是如下:
-----------------------------------------------------------------------------
| Name | ID | threads quantity| Start time |
-----------------------------------------------------------------------------
**68**
如何使踏板按正確的順序運行?
如果您需要順序訂購,爲什麼使用線程? – basti
這聽起來不正確!看來t2完全依賴於t1的輸出。這不是一個選擇並行化的任務。 –
我需要流同步工作,但直到一個讀取ArrayList中的數據,另一個必須等待,只有當第一個讀取所有數據並顯示它們時,第二個線程纔會顯示一般信息。 – Creative