java – 如何测试非线程安全类?
发布时间:2020-12-15 04:07:48 所属栏目:Java 来源:网络整理
导读:我是Threads的新手.我正在阅读 Java Concurrency in Practice.我在书中找到了以下例子. @NotThreadSafepublic class UnSafeSequence{ private int value; public int getNext() { return value++; }} 我想通过编写访问此类的几个线程(或更多)来测试此代码,以
我是Threads的新手.我正在阅读
Java Concurrency in Practice.我在书中找到了以下例子.
@NotThreadSafe public class UnSafeSequence { private int value; public int getNext() { return value++; } } 我想通过编写访问此类的几个线程(或更多)来测试此代码,以获得线程安全感. 我试过这些,但不确定如何测试这些例子. class MyThread implemented Runnable { public void run() { //Should I create a new object for UnSafeSequence here ? } } 谢谢你的帮助. 解决方法
如果每个线程都有自己的UnSafeSequence实例,那么它就不会证明问题.您需要做的是在MyThread实例之外创建一个UnSafeSequence实例,并将其传递给每个MyThread的构造函数.
UnSafeSequence unsafe = new UnSafeSequence(); ... new Thread(new MyThread(unsafe)).start(); new Thread(new MyThread(unsafe)).start(); ... class MyThread implemented Runnable { private UnSafeSequence unsafe; public MyThread(UnSafeSequence unsafe) { this.unsafe = unsafe; } public void run() { ... unsafe.getNext(); ... } } 在学习线程的同时,请务必阅读有关ExecutorService和其他优秀类的知识.这是一个good tutorial from Sun^H^H^H Oracle. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |