Ich möchte Objekte zwischen Threads synchronisieren, diese Objekte eine abstrakte Klasse erweitern:Wie funktionieren synchronisierte Methoden in der abstrakten Klasse?
public abstract class GraphicObject {
public synchronized void test(){
//work...
}
}
class Circle extends GraphicObject {
}
class Rectangle extends GraphicObject {
}
diese Testklasse vor:
public class Class {
void main(){
GraphicObject a=new Circle();
GraphicObject b=new Rectangle();
Runnable r1 = new MyThread(a);
new Thread(r1).start();
Runnable r2 = new MyThread(b);
new Thread(r2).start();
}
private class MyThread implements Runnable {
private GraphicObject g;
public MyThread(GraphicObject g) {
this.g=g;
}
public void run() {
g.test();
}
}
}
In diesem Fall a
und b
sind indipendent Objekte mit der gleichen abstrakten Klasse. Sind test()
Methode zusammen synchronisiert oder nicht? Wenn ein Thread-Aufruf a.test()
ist b.test()
für alle anderen Threads gesperrt?
Ich erwarte nein, weil sie verschiedene Objekte sind.
Haben Sie versucht, es zu kompilieren? –
ja, aber ich habe meinen Code vereinfacht, also habe ich etwas entfernt. Jetzt bearbeite ich die Testklasse, um kompilierbar zu sein, aber meine Frage war wirklich theoretisch – Tobia
Ich bin nicht wirklich sicher, dass die verknüpfte Frage die gleiche ist. – Tobia