Я использую среду executor для многопоточности и имею некоторую путаницу в отношении выполнения блока синхронизации. Кто-нибудь может предложить, что если следующий код имеет проблемы с синхронизацией, и если да, как я могу улучшить это? Спасибо.
public class ProcessDemo {
private ExecutorService executorService = Executors.newCachedThreadPool();
@SuppressWarnings("InfiniteLoopStatement")
public void startProcess(){
do {
// making connection with clients
ThreadingDemo thread = new ThreadingDemo(clientDemo);
executorService.execute(thread);
} while (true);
}
}
public class ThreadingDemo implements Runnable{
private ClientDemo clientDemo;
ThreadingDemo(ClientDemo clientDemo){
this.clientDemo = clientDemo;
}
public void run(){
if(someCodition){
synchronized (ThreadingDemo.class){
clientDemo.show();
}
}
synchronized (ThreadingDemo.class){
myMethod1();
}
}
private void myMethod1() {
clientDemo.start();
clientDemo.show();
}
}
public class ClientDemo {
void start(){
}
void show(){
}
}