java如何在执行线程时阻止对象更改
我在执行线程时遇到问题。当我在执行另一个更新该对象的线程时,从主线程删除一个对象时,就会出现问题。当第二个线程尝试更新对象时,由于对象不再存在而发生异常。我的问题是:当我运行我的特殊线程时,如何阻止其他线程修改我的对象?我希望我的特殊线程优先于应用程序中的所有其他线程
多谢各位
你可以在下面搜索框中键入要查询的问题!
我在执行线程时遇到问题。当我在执行另一个更新该对象的线程时,从主线程删除一个对象时,就会出现问题。当第二个线程尝试更新对象时,由于对象不再存在而发生异常。我的问题是:当我运行我的特殊线程时,如何阻止其他线程修改我的对象?我希望我的特殊线程优先于应用程序中的所有其他线程
多谢各位
# 1 楼答案
有多种方法可以实现这一点:
(a)使用锁定或同步(在对象上使用同步块)方式同步删除和对象访问调用
(b)编辑:使用初始值为1的原子整数。删除时将其标记为0,修改时将其标记为-1(完成后重新标记为1),修改线程将在继续修改对象之前检查
if (atomicCounter != 0)
,删除线程将在删除之前检查while (atomicCounter != -1)
(即等待变为零)(c)使用与倒计时闩锁相反的东西(倒计时闩锁,它在Java库中不存在)
(d)不要做任何事情,如果出现异常,请使用catch和finally block正确处理它,并让线程代码继续运行