summaryrefslogtreecommitdiff
path: root/ws2015/oss/blaetter/12/Prozess.java
blob: ae20a6c464b9452a2631db512c1addff578401c0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
public class Prozess extends Thread {
    private Speicher my_speicher;
    private int prozess_id;

    public Prozess(int prozess_id, Speicher my_speicher) {
	this.prozess_id = prozess_id;
	this.my_speicher = my_speicher;
    }

    public void run() {
	System.out.println("prozess " + prozess_id + " is now running");
	while (true) {
	    if (Math.random() >= 0.5) {
		// Hole Leserecht
		my_speicher.leserecht_holen(prozess_id);
		// lese
		System.out.println("Prozess " + prozess_id + " hat gelesen: "
				   + my_speicher.lese());
		// Leserecht freigeben
		my_speicher.leserecht_freigeben(prozess_id);
	    } else {
		// Arbeite als Schreiber
		my_speicher.schreibrecht_holen(prozess_id);
		// schreibe
		my_speicher.schreibe(Integer.toString(prozess_id));
		// schreiben
		my_speicher.schreibrecht_freigeben(prozess_id);
	    }
	}
    }
}