Синхронизированный блок внутри метода запуска
Если у меня есть что-то вроде ниже, так что это значит внутриsynchronized block
synchronised (syncObject) {
По сути, это будет означать, что только один поток может быть внутри вышеуказанного блока, и как только один поток завершит выполнение, второй поток войдет в этот синхронизированный блок.synchronised (syncObject), Правильно? Может кто-нибудь объяснить мне на языке LayMan, чтобы я мог получить лучшую картину?
private static final class Task implements Runnable {
{
private static Object syncObject = new Object();
public Task(Command command, BlockingQueue<Integer> pool1, BlockingQueue<Integer> pool2) {
this.command = command;
this.existPool = pool1;
this.newPool = pool2;
}
public void run()
{
synchronised (syncObject) {
if() {
existId = existPool.take();
attributeMethod(existId);
} else if() {
newId = newPool.take();
attributeMethod(newId);
}
}
}
}
// So I need to make this method synchronized or not? Currently I have made this synchronized
private synchronized void attributeMethod(int range) {
// And suppose If I am calling any other method here-
sampleMethod();
}
// What about this method, I need to make this synchronized as well? or not?
private synchronized void sampleMethod() {
}