Ich habe Probleme mit synchronisiertem die Art und Weise nicht verhalten erwarte ich, habe ich versucht, auch flüchtige Schlüsselwort:Java Synchronized und Themen
Shared Object:
public class ThreadValue {
private String caller;
private String value;
public ThreadValue(String caller, String value) {
this.value = value;
this.caller = caller;
}
public synchronized String getValue() {
return this.caller + " " + this.value;
}
public synchronized void setValue(String caller, String value) {
this.caller = caller;
this.value = value;
}
}
Gewinde 1:
class CongoThread implements Runnable {
private ThreadValue v;
public CongoThread(ThreadValue v) {
this.v = v;
}
public void run() {
for (int i = 0; i < 10; i++) {
v.setValue("congo", "cool");
v.getValue();
}
}
}
Thread 2:
class CongoThread implements Runnable {
private ThreadValue v;
public CongoThread(ThreadValue v) {
this.v = v;
}
public void run() {
for (int i = 0; i < 10; i++) {
v.setValue("congo", "lame");
v.getValue();
}
}
}
Berufung Klasse:
class TwoThreadsTest {
public static void main (String args[]) {
ThreadValue v = new ThreadValue("", "");
Thread congo = new Thread(new CongoThread(v));
Thread libya = new Thread(new LibyaThread(v));
libya.start();
congo.start();
}
}
Gelegentlich bekomme ich "In Libya Thread congo cool"
, die nie passieren sollte. Ich erwarte nur:
"In Libya Thread libya awesome"
"In Congo Thread congo cool"
Ich erwarte nicht, sie zu mischen.
Wie können Sie "In Libyen Thread libya awesome" erwarten? Ihr Programm enthält nicht das Wort "super" –