线程安全与非线程安全

五迷三道 提交于 2019-11-28 01:53:20

    在java的线程中经常能看到关于线程安全与非线程安全的说法,以前我认为线程安全是必须的,但在我进行了关于进度条组件的编写时,发现线程安全并不是必需的。也许你会说在每次一个代码段执行完,要改变进度条时,调用一下进度条组件的刷新方法就行了。这样无疑使代码的执行时间大大增长了,代码的效率是我们必须重视的,而且1%的进度,在任务较多,代码执行时间长的情况下人眼是不能分辨的,而在任务比较少的情况下,整个进度条也许都是一闪而逝,更何况1%的进度。所以在这种不需要即时显示数据变化的情况下,线程不安全也是可以的,只有那些对数据的及时性非常看重的才需要注意线程安全。比如商品金额,你要即时的显示当前的金额,不能出现脏数据(无效数据,过时的数据),当金额变化时,其他线程会获取现在的金额数据进行处理,然而如果还没有处理完,金额又变了的话,就会出现脏数据。所以在处理中要禁止对金额数据的操作,即加锁。来保证线程安全。

 

   

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!