Когда использовать энергозависимые и синхронизированные
Я знаю, что есть много вопросов по этому поводу, но я все еще не совсем понимаю. Я знаю, что делают оба эти ключевых слова, но я не могу определить, какие использовать в определенных сценариях. Вот несколько примеров, которые я пытаюсь определить, какой из них лучше всего использовать.
Пример 1:
import java.net.ServerSocket;
public class Something extends Thread {
private ServerSocket serverSocket;
public void run() {
while (true) {
if (serverSocket.isClosed()) {
...
} else { //Should this block use synchronized (serverSocket)?
//Do stuff with serverSocket
}
}
}
public ServerSocket getServerSocket() {
return serverSocket;
}
}
public class SomethingElse {
Something something = new Something();
public void doSomething() {
something.getServerSocket().close();
}
}
Пример 2:
public class Server {
private int port;//Should it be volatile or the threads accessing it use synchronized (server)?
//getPort() and setPort(int) are accessed from multiple threads
public int getPort() {
return port;
}
public void setPort(int port) {
this.port = port;
}
}
Любая помощь очень ценится.