Скажем, у меня есть два потока, оба запущенные из данного экземпляра класса, А. Потоки должны выполнять метод из одного и того же экземпляра, но по одному за раз.Я попытался сделать метод синхронизированным, но, по-видимому, он применим, когда есть разные экземпляры, пытающиеся вызвать метод (из того, что я понял; простите, если я ошибаюсь).
Так как же мне это сделать,желательно стандартным или рекомендованным способом?
РЕДАКТИРОВАТЬ: Вот соответствующий код:
public class A {
.
.
.
public void method1(){
ExecutorService threadObject = Executors.newSingleThreadExecutor();
threadObject.execute(new Runnable(){
@Override
public void run() {
try {
while (someCondition) {
//Here's one invocation
someObject = readObject();
}
}
catch (IOException | ClassNotFoundException ex) {}
}
});
//Here's the other invocation
while(someCondition){
someObject = readObject();
}
}
//Here's the synchronized method
private synchronized SomeClass readObject() throws IOException, ClassNotFoundException{
return (SomeClass) incomingResponses.readObject();
}
//Main method to instantiate the class
public static void main(String ... args) {
A = new A();
A.method1();
}
}
Я все еще не уверен, что я делаю неправильно.