gpt4 book ai didi

java - 如何测试非线程安全类?

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:29:14 25 4
gpt4 key购买 nike

我是 Threads 的新手。我正在阅读 Java 并发实践。我在书中找到了下面的例子。

@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 ?
}
}

感谢您的帮助。

最佳答案

I wanted to test this code by writing couple of threads(or more) accessing this class to get a feeling of thread safety.

如果每个线程都有自己的 UnSafeSequence 实例那么它不会证明问题。您需要做的是创建一个 UnSafeSequence 的实例。在你的MyThread之外实例并将其传递给每个 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和其他很棒的类(class)。这是一个 good tutorial from Sun^H^H^H Oracle .

关于java - 如何测试非线程安全类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15070513/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com