日期:2014-05-20  浏览次数:20783 次

将作为锁的对象释放掉后,以它为锁的线程会如何?释放线程对象的话又如何?
假设有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();
那么原先的两个线程是继续运行下去呢还是被停止?

------解决方案--------------------
看得晕!
------解决方案--------------------
线程学得不好,但我觉得你说说你的实现目的,可能还好点