我想使用在线程MyT中定义的一些可变变量,该线程在应用程序中扩展了Java的Thread
,用法将作为Thread.currentThread.asInstanceof[MyT]
引用并更新其中的可变变量。
这是线程安全的吗?
更新
我使用scala编写了一些应用程序,而没有考虑多线程问题,并且使用了在对象中使用可变变量的所谓最差实践(因为它对于初学者来说是如此容易使用!)。
但是现在,该项目以某种方式扩展到了Web应用程序,我不得不处理多线程问题。
我没有时间再次重写代码,将对象中的每个可变变量重构为参数(可能是不使用全局对象可变变量的一种解决方案),所以我正在考虑将对象中的可变变量移动到扩展的线程类中Thread
类,并重构代码以使用Thread.currentThread
,然后将实例转换为我的扩展线程类型,然后引用/更新为最初是全局可变变量的可变变量。
所以这是我最初的问题。
最佳答案
为此使用ThreadLocal:http://java.dzone.com/articles/java-thread-local-%E2%80%93-how-use