java - Non-volatile variable value during wait() and notifyall() call in 2 threads -
lets have 2 threads , b , within these both 2 threads have synchronized
block in int
variable modified continously. example, thread a
come in synchronized block modify int variable phone call these 2 methods:
notifyall(); //to wake thread b in waiting state , wait():
and after thread b
acquire lock , same steps thread , process maintain on repeating. changes int variable happens within synchronized block of both threads.
my question need create int variable volatile
. thread flush main memory before go waiting state , reload info in registers when thread acquire lock 1 time again result of notifyall();
call.
if , b run alternatively rather concurrently, , if switch off via wait()
, notifyall()
invocations on same object
, , if no other threads access variable in question, thread safety not require variable volatile.
note o.wait()
, o.notifyall()
must invoked within method or block synchronized on o
-- synchronization sufficient ensure 2 threads see each others' writes variable before switch-off.
do careful ensure 2 threads synchronizing on same object, not clear question. have no effective synchronization @ if, say, 2 threads waiting on , notifying different instances of same class.
java multithreading synchronized volatile
No comments:
Post a Comment