diff options
Diffstat (limited to 'ws2015/oss/blaetter/12/Prozess.java')
-rw-r--r-- | ws2015/oss/blaetter/12/Prozess.java | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/ws2015/oss/blaetter/12/Prozess.java b/ws2015/oss/blaetter/12/Prozess.java new file mode 100644 index 0000000..ae20a6c --- /dev/null +++ b/ws2015/oss/blaetter/12/Prozess.java | |||
@@ -0,0 +1,31 @@ | |||
1 | public class Prozess extends Thread { | ||
2 | private Speicher my_speicher; | ||
3 | private int prozess_id; | ||
4 | |||
5 | public Prozess(int prozess_id, Speicher my_speicher) { | ||
6 | this.prozess_id = prozess_id; | ||
7 | this.my_speicher = my_speicher; | ||
8 | } | ||
9 | |||
10 | public void run() { | ||
11 | System.out.println("prozess " + prozess_id + " is now running"); | ||
12 | while (true) { | ||
13 | if (Math.random() >= 0.5) { | ||
14 | // Hole Leserecht | ||
15 | my_speicher.leserecht_holen(prozess_id); | ||
16 | // lese | ||
17 | System.out.println("Prozess " + prozess_id + " hat gelesen: " | ||
18 | + my_speicher.lese()); | ||
19 | // Leserecht freigeben | ||
20 | my_speicher.leserecht_freigeben(prozess_id); | ||
21 | } else { | ||
22 | // Arbeite als Schreiber | ||
23 | my_speicher.schreibrecht_holen(prozess_id); | ||
24 | // schreibe | ||
25 | my_speicher.schreibe(Integer.toString(prozess_id)); | ||
26 | // schreiben | ||
27 | my_speicher.schreibrecht_freigeben(prozess_id); | ||
28 | } | ||
29 | } | ||
30 | } | ||
31 | } | ||