Mah*_*ran 3 java multithreading
我是Threads的新手.我正在阅读Java Concurrency in Practice.我在书中找到了以下例子.
@NotThreadSafe
public class UnSafeSequence
{
private int value;
public int getNext()
{
return value++;
}
}
Run Code Online (Sandbox Code Playgroud)
我想通过编写访问此类的几个线程(或更多)来测试此代码,以获得线程安全感.
我试过这些,但不确定如何测试这些例子.
class MyThread implemented Runnable
{
public void run()
{
//Should I create a new object for UnSafeSequence here ?
}
}
Run Code Online (Sandbox Code Playgroud)
谢谢你的帮助.
如果每个线程都有自己的实例,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();
...
}
}
Run Code Online (Sandbox Code Playgroud)
在学习线程的同时,请务必阅读有关ExecutorService其他优秀课程的内容.这是Sun ^ H ^ H ^ H Oracle的一个很好的教程.
| 归档时间: |
|
| 查看次数: |
767 次 |
| 最近记录: |