mardi 26 mai 2015
Wechselseitiger Ausschluss mit Locks/Semaphores
Posted on 01:19 by verona
Guten Morgen,
ich habe hier eine Klasse, deren Methoden durch Objektmonitore geschützt sind um inkonsitente Daten zu verhindern, wenn mehrere Threads diese aufrufen.
Nun soll das ganze noch einmal mit Locks und einmal mit Semaphores realisiert werden.
Meine Frage ist, ob ich für jede der Methoden ein eigenes Lock/Semaphore Objekt erstellen muss.
Was die Klasse macht ist zweitrangig, mir geht es nur um die Realisierung des Wechselseitigen Ausschlusses.
ich habe hier eine Klasse, deren Methoden durch Objektmonitore geschützt sind um inkonsitente Daten zu verhindern, wenn mehrere Threads diese aufrufen.
Nun soll das ganze noch einmal mit Locks und einmal mit Semaphores realisiert werden.
Meine Frage ist, ob ich für jede der Methoden ein eigenes Lock/Semaphore Objekt erstellen muss.
Was die Klasse macht ist zweitrangig, mir geht es nur um die Realisierung des Wechselseitigen Ausschlusses.
Java Code:
-
public class VorlesungsverwaltungMonitor {
-
-
private HashSet<Vorlesung> vorlesungen;
-
private HashSet<Student> studenten;
-
-
-
public HashSet<Vorlesung> getVorlesungen() {
-
return vorlesungen;
-
}
-
-
-
public void addVorlesung(Vorlesung vorlesung) {
-
//TODO: Methode hier implementieren, um eine Vorlesung zum Verwaltungssystem hinzuzufuegen
-
synchronized(vorlesungen) {
-
vorlesungen.add(vorlesung);
-
}
-
}
-
-
-
public void deleteVorlesung(Vorlesung vorlesung) {
-
//TODO: Methode hier implementieren, um eine Vorlesung aus dem Verwaltungssystem zu loeschen
-
synchronized(vorlesungen){
-
vorlesungen.remove(vorlesung);
-
}
-
}
-
-
-
public HashSet<Student> getStudenten() {
-
return studenten;
-
}
-
-
-
public void addStudent(Student student) {
-
//TODO: Methode hier implementieren, um einen Studenten zum Verwaltungssystem hinzuzufuegen
-
synchronized(studenten){
-
studenten.add(student);
-
}
-
}
-
-
-
public void deleteStudent(Student student){
-
//TODO: Methode hier implementieren, um einen Studenten aus dem Verwaltungssystem zu loeschen
-
synchronized(studenten){
-
studenten.remove(student);
-
}
-
}
-
-
-
public void addPointsForStudent(Student s, Vorlesung v, int blattnummer, int punktzahl){
-
//TODO: Methode hier implementieren, um einem Studenten s fuer die Vorlesung v auf Blatt blattnummer die Punktzahl punktzahl zu geben
-
synchronized(v){
-
v.setPunkteStudent(s, punktzahl, blattnummer);
-
}
-
-
}
-
-
-
public boolean studentInVorlesung(Student s, Vorlesung v){
-
//TODO: Methode hier implementieren, die zurueckgibt, ob Student s Vorlesung v belegt
-
return v.getTeilnehmer().contains(s);
-
}
-
-
-
public void addStudentToVorlesung(Student s, Vorlesung v){
-
//TODO: Methode hier implementieren, die Student s zu Vorlesung v hinzufuegt
-
synchronized(v){
-
v.addTeilnehmer(s);
-
}
-
}
-
-
-
public void deleteStudentFromVorlesung(Student s, Vorlesung v){
-
//TODO: Methode hier implementieren, die Student s aus Vorlesung v loescht
-
synchronized(v){
-
v.removeTeilnehmer(s);
-
}
-
}
-
}
Wechselseitiger Ausschluss mit Locks/Semaphores
Categories: Wechselseitiger Ausschluss mit Locks/Semaphores
Inscription à :
Publier les commentaires (Atom)
0 commentaires:
Enregistrer un commentaire