2017-05-06 6 views
0

スレッドグループからすべてのスレッドを一度に開始したい。Thread Pool ExecutorServiceを使用してスレッド(ThreadGroup)のグループを開始できますか、または一度に任意の方法で開始できますか?

ThreadGroup1 obj = new ThreadGroup1(); 
    ThreadGroup tg1 = new ThreadGroup("Parent ThreadGroup"); 

    Thread t1=new Thread(tg1, obj, "one"); 
    Thread t2=new Thread(tg1, obj, "two"); 
    Thread t3=new Thread(tg1, obj, "three"); 

    t1.start(); 
    t2.start(); 
    t3.start(); 

答えて

0

「すぐに」はリアルタイム環境でのみ意味を持ち、「所定の時間間隔中」を意味します。あなたがデモしたプログラムは、ほとんどの場合、比較的短い時間間隔で3つのスレッドをすべて開始しますが、メインスレッドがプリエンプションされると、この間隔が重要になることがあります。そして、たとえメインスレッドが途切れなく実行されたとしても、3つのスレッドがすべて実際の実行を開始する実際の瞬間は変わります。まず、スレッドを実行する物理プロセッサが3つありますか?はいの場合は、無料ですか?または他のプロセスが占有していますか?あなたのスレッドが始まってすぐに、彼らはプロセッサーから奪われることがあります - あなたが始まった瞬間と同じくらい重要ですか?実際の実行がどのように起こるかは多すぎますが、あなたのスレッドが「一度に」開始したり、望ましい時間間隔で終了することを保証することは非常に困難です。あなたは何百回もプログラムを走らせることができますが、これはいつも望むように動作することを証明するものではありません。 スレッドが「一度に」開始することを真剣に確認したい場合は、"Real time programming"を学んでください。また、リアルタイムプログラミングとは、高速プログラムの作成方法ではなく、与えられた時間間隔で作業が終了するようにプログラムを作成する方法です。

関連する問題