Hi Alan,

On 29/04/2019 12:17, Alan Bateman wrote:
I don't think AbstractPlainSocketImpl.isBound needs to be volatile as it is guarded by the synchronization on the impl (the doConnect and bind methods are synchronized).

I see that it is set outside of any synchronized block
in AbstractPlainSocketImpl::bind

 433     protected synchronized void bind(InetAddress address, int lport)
 434         throws IOException
 435     {
 436        synchronized (fdLock) {
 437             if (!closePending && !isBound) {
 438                 NetHooks.beforeTcpBind(fd, address, lport);
 439             }
 440         }
 441         socketBind(address, lport);
 442         isBound = true;



 443     }

which for me justifies that it should be volatile.

best regards,

-- daniel

Reply via email to