天天看點

父線程 在建立了子線程後,是不是繼續執行自己的代碼 ?(收集整理)

1.父線程必須在子線程結束後結束 因為子線程是屬于父線程的父線程要是結束了它的所有子線程也就随之消亡!

2..如果父線程先于子線程結束,那麼子線程将在父線程結束的同時被迫結束。Thread.Join()方法使父線程等待,直到子線程結束。Abort()方法帶來的後果是不可恢複的終止線程。

3.起始線程可以稱之為主線程,如果所有的前台線程都停止了,那麼主線程可以終止,而所有的背景線程都将無條件終止。背景線程跟前台線程隻有一個差別,那就是背景線程不妨礙程式的終止。一旦一個程序所有的前台線程都終止後,CLR将通過調用任意一個存活中的背景程序的Abort()方法來徹底終止程序。

5.挂起,睡眠(都可稱為--阻塞,暫停)與Thread.Sleep 不同,Thread.Suspend 不會使線程立即停止執行。直到線程到達安全點之後它才可以将該線程挂起。如果線程尚未啟動或已經停止,則它将不能挂起。調用 Thread.Resume 将使另一個線程跳出挂起狀态并使該線程繼續執行。一個線程不能對另一個線程調用Sleep ,但是一個線程可以對另一個線程調用Suspend。還可以使用許多其它的方式來阻塞線程。例如,可以通過調用 Thread.Join 使一個線程等待另一個線程(子線程)停止。使用Monitor.Wait使一個線程等待通路一個同步對象。

繼續閱讀