2

Ich bin über synchronisierte Block und Zeitplan Regeln untersuchen. Ich weiß, dass beide Methoden verwendet werden, um synchrone Daten zu garantieren. Aber ich verstehe sie nicht, wie sie funktionieren. Was sind die Vorteile und Nachteile von Synchronisations- und Planungsregeln? ich den Befehl über Planungsregeln referd hier: http://help.eclipse.org/mars/index.jsp?topic=%2Forg.eclipse.platform.doc.isv%2Fguide%2Fruntime_jobs_rules.htm In diesem Dokument vertreten als unter einer Regel über:synchronisierte Block/Methode und Zeitplan Regeln in Java Concurrency

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; 
     } } 

Dann wird die Regel in ein Objekt oder eine Methode gesetzt Jobs zu steuern. In diesem Code sehe ich keine Regel und wie man die Regel überprüft. Und wann wird die Planungsregel oder synchronisiert verwendet?

Vielen Dank im Voraus

Antwort

0

Zeitplan und die Synchronisation verwendet werden, wenn Threads die gleichen Daten zugreifen müssen. Es wäre ein großes Problem, wenn ein Thread Daten liest, mutiert und bevor er die Daten zurückschreiben kann, liest ein anderer Thread die Daten.

Dieser Querschnitt muss sorgfältig behandelt werden, um sicherzustellen, dass nur ein Prozess gleichzeitig auf die freigegebene Ressource zugreifen kann. Die Synchronisierung ermöglicht es jeweils nur einem Prozess, die Ressource zu nutzen (in einer fortgeschritteneren Weise kann die Synchronisation eine vorbestimmte Anzahl von Mehrfachzugriffen zulassen, wenn dies gewünscht wird; z. B. Semaphore)

Der Zeitplan wird verwendet, um die Reihenfolge zu bestimmen Die Threads können auf die freigegebene Ressource zugreifen (zeitlich abgestimmt).

Wenn ein Thread keinen Zugriff auf eine Ressource, die ein anderer Thread würde, gibt es keinen Grund, sich um die Synchronisation zu befürchten ist, da sie die einzige ist, die Ressource mit

spezifisch für Ihr Code-Snippet, erstellt es eine Mutex (was deutlich gesagt wird), die den Zugang der Ressource zu nur einem Prozess erlaubt - der Hinweis darüber nennt es einen binären Semaphor, und für alle Absichten und Zwecke funktioniert es wie eins. Java verwendet jedoch Monitore in ihren vordefinierten Mutex-Sperren. keine Semaphore.

+0

Wenn Sie möchten, kann ich in Prozess-Synchronisation ein wenig mehr vertiefen, aber es genügt zu sagen, das ist eher eine Frage des Betriebssystems. Sie sollten es als eine "Black Box" betrachten, die Sie verwenden können und es funktioniert. –

+0

Zeitplan und Synchronisierung werden verwendet, wenn Threads auf dieselben Daten zugreifen. Der Zeitplan kann die Reihenfolge der Ausführung der Threads bestimmen, die Synchronisation bestimmt die Reihenfolge der Ausführung der Threads nicht. Ist mein Verständnis richtig? –

+0

das ist richtig, Synchronisation NUR gewährleistet, dass nur die allozierte Anzahl von Prozessen (einer in einem binären Format) auf die Daten zugreifen kann. –