在Java中测试自定义锁
我有一个实现锁接口的MyLock类。现在MyLock中的构造函数接受两个线程对象作为参数 我正在为MyLock编写一个测试类在Java中测试自定义锁,java,Java,我有一个实现锁接口的MyLock类。现在MyLock中的构造函数接受两个线程对象作为参数 我正在为MyLock编写一个测试类 public class TestMyLock { static MyLock mylck; public static void main(String[] args) { Thread t1 = new Thread(new Runnable(){ public void run
public class TestMyLock
{
static MyLock mylck;
public static void main(String[] args)
{
Thread t1 = new Thread(new Runnable(){
public void run(){
mylck.lock(); //1 - gives error
//Critical code
mylck.unlock();
}
});
Thread t2 = new Thread(new Runnable(){
public void run(){
mylck.lock();
//Critical code
mylck.unlock();
}
});
mylck = new MyLock(t1, t2); //where to place this
t1.start(); t2.start();
}
}
我的测试代码哪里出错了。基本上,我需要测试我的MyLck功能
编辑:错误-1是因为myLck未初始化。它给出了一个编译错误。我想知道如何初始化它,因为要初始化,我需要传递线程对象。我认为最好将mylck.lock()。。。在循环中使用mylck.unlock(),使其运行更长时间以检测缺陷(如果可行)。我们需要知道MyLock.lock()是如何实现的,以查看错误是什么。我看不出这个主类有什么问题。锁的创建是在线程启动之前完成的,因此当call=>it's ok时,两个运行方法中使用的mylck引用将不会为null
另一方面,为什么要实现自己的锁?
java.util.concurrent.locks
包提供了几种常见的实现。我正在尝试编写一个测试代码来验证我的硬件练习,即编写一个锁。好的,所以我认为您的测试代码是可以的。偏离路线取决于临界截面线以及如何测试这些线是否已真正“锁定”给出错误:哪一条?你确定这是正确的代码吗?(thread1 t1)您的代码与这里编写的代码完全一样,不会为我产生编译错误。您正在使用哪个编译器/IDE?