2

同期ブロックとスケジューリングルールについて調べています。私は両方の方法が同期データを保証するために使用されることを知っています。しかし、私は彼らの仕組みを理解していない。同期ルールとスケジューリングルールの長所と短所は何ですか? は、私がここにスケジューリングルールについての指示をreferd:このドキュメントでhttp://help.eclipse.org/mars/index.jsp?topic=%2Forg.eclipse.platform.doc.isv%2Fguide%2Fruntime_jobs_rules.htm を、それは以下のようにルールについて表される:同期ブロック/メソッドとスケジューリングルールをJava同時実行で

We can fix this example by creating a simple scheduling rule that acts as a mutex (also known as a binary semaphore): 

    class Mutex implements ISchedulingRule { 
     public boolean isConflicting(ISchedulingRule rule) { 
     return rule == this; 
     } 
     public boolean contains(ISchedulingRule rule) { 
     return rule == this; 
     } } 

をその後、ルールがジョブを制御するためにオブジェクトやメソッドに設定されています。 このコードでは、ルールとルールのチェック方法は表示されません。 スケジューリングルールが使用されるか、同期されるのはいつですか?

ありがとうございます。

答えて

0

スレッドが同じデータにアクセスする必要がある場合は、スケジュールと同期が使用されます。 1つのスレッドがデータを読み取り、それを変更し、データを書き戻す前に別のスレッドがデータを読み込むと、大きな問題になります。

このセクションでは、一度に1つのプロセスだけが共有リソースにアクセスできるように注意する必要があります。同期は、一度に1つのプロセスのみがリソースを利用することを可能にする(より高度な方法では、同期は、傾けられた場合、すなわちセマフォーの場合に予め定められた数の多重アクセスを可能にする)。

スケジュールは、スレッドは共有リソースにアクセス(タイミング)することができる。

スレッドが別のスレッドが、それはあなたのコードスニペットに固有そのリソース

を使用して唯一のものであるとして同期を心配する理由はないだろう、それはミューテックスを作成し、リソースへのアクセス権を持っていない場合上記の注釈はバイナリセマフォと呼ばれ、すべてのインテントと目的のために、1つのプロセスと同じように動作します。しかし、javaはあらかじめ定義されたmutexロックでモニターを使用します。セマフォーではありません。

+0

私は、プロセスの同期化をかなり詳しく調べることができますが、それはオペレーティングシステムの質問の多くです。あなたはそれをあなたが使用できる「ブラックボックス」と考えるべきであり、それは機能します。 –

+0

スケジュールと同期は、スレッドが同じデータにアクセスするときに使用されます。 Sheduleはスレッドの実行順序を決定でき、同期はスレッドの実行順序を決定しません。私は正しいのですか? –

+0

が正しいことを確認してください。同期だけでは、割り当てられた数のプロセス(バイナリ形式の1つ)がデータにアクセスできることが保証されます。 –

関連する問題