线程 1,执行代码:
while(true){
if(a!=-1){
a=0;
}
else{
/*代码片段 1*/
}
}
线程 2,执行代码:
/*代码片段 2*/
a=-1;
有可能出现一种情况,a 初始值为 2,当线程 1 执行完 if(a!=-1)后极短时间内,线程 2 把 a 改为-1,而接着在线程 1 的 if 块代码又把 a 改为 0。在下一次循环时,原设想是执行代码片段 1,却变成执行 a=0
请问一般用什么方式处理这种问题?
while(true){
if(a!=-1){
a=0;
}
else{
/*代码片段 1*/
}
}
线程 2,执行代码:
/*代码片段 2*/
a=-1;
有可能出现一种情况,a 初始值为 2,当线程 1 执行完 if(a!=-1)后极短时间内,线程 2 把 a 改为-1,而接着在线程 1 的 if 块代码又把 a 改为 0。在下一次循环时,原设想是执行代码片段 1,却变成执行 a=0
请问一般用什么方式处理这种问题?