java-线程安全,静态方法和一些奇怪的代码
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java-线程安全,静态方法和一些奇怪的代码,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1048字,纯文字阅读大概需要2分钟。
内容图文
![java-线程安全,静态方法和一些奇怪的代码](/upload/InfoBanner/zyjiaocheng/669/9cbb4627035e4175a04e81c6fee6f9d8.jpg)
我最近偶然发现了与下面类似的一段代码.此代码确实很臭.看起来像单例,但不是因为没有私有构造函数.我知道这肯定会给线程安全问题带来足够大的负担.特殊给出的类实例.有人可以指出此代码中的线程安全问题吗?
public class AClass extends AnotherClass {
public static final AClass instance = new AClass();
public static SomeObject doSomethingThatCallsAService(Params params) {
return methodThatCallsService(params, instance);
}
public static SomeObject methodThatCallsService(Params params, AClass instance) {
-----call service here ---------
instance.doSomethingElse();
}
private void doSomethingElse() {
--- do some trivial work -----
}
}
解决方法:
假定对象不携带状态,则不必担心线程安全性,无论调用单例对象或引用单例对象的线程数量如何.
该类中的所有方法,包括静态方法,都不使用任何共享数据.因此,无论是在单例对象上调用方法还是在实例周围传递实例,都无需访问任何要同步的内容.
就如代码所示,唯一可能需要同步的数据是methodThatCallsService的参数中的params,仅当此方法修改数据并且多个线程持有对同一Params对象的引用时,才可能需要同步.
但是就此类而言,即使单例实现很容易受到攻击,它也是线程安全的.
内容总结
以上是互联网集市为您收集整理的java-线程安全,静态方法和一些奇怪的代码全部内容,希望文章能够帮你解决java-线程安全,静态方法和一些奇怪的代码所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。