将作为锁的对象释放掉后,以它为锁的线程会如何?释放线程对象的话又如何?
假设有class Lock和class Reader,class Writer三个类, Reader和Writer以Lock为锁来进行共享数据的互斥访问.假设Reader和Writer类有如下内容:
class Reader implements Runnable {
... ...
private Thread readerThread;
public Reader() {
... ...
readerThread=new Thread(this);
}
... ...
public void start() { readerThread.start(); }
public void reset() {
readerThread=null;
readerThread=new Thread(this);
}
... ...
}
Writer类与此相似. 现在在主程序中分别有三个类的实例:
Lock lock=new Lock();
Reader reader=new Reader();
Writer writer=new Writer();
reader.start(); writer.start();
... ...
那么,假如在程序执行到某处时有如下语句:
lock=new Lock(); 使原先lock指向的对象成为一个无用对象而被释放掉,那么以它为锁的reader和writer里的线程会怎么样? 继续运行下去还是停止?
第二问题: 如果并不把锁对象释放, 而是把两个线程释放,也即在程序某处执行了: reader.reset(); writer.reset();
那么原先的两个线程是继续运行下去呢还是被停止?
------解决方案--------------------看得晕!
------解决方案--------------------线程学得不好,但我觉得你说说你的实现目的,可能还好点