Когда использовать энергозависимые и синхронизированные

Я знаю, что есть много вопросов по этому поводу, но я все еще не совсем понимаю. Я знаю, что делают оба эти ключевых слова, но я не могу определить, какие использовать в определенных сценариях. Вот несколько примеров, которые я пытаюсь определить, какой из них лучше всего использовать.

Пример 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;
    }

}

Любая помощь очень ценится.

Ответы на вопрос(5)

Ваш ответ на вопрос