Signal And Await In java

Posted on 2009-10-07 14:31 MichaelCao 阅读(620) 评论(0)  编辑 收藏 引用 所属分类: JAVAApache Hadoop_Storm_Spark


写了个MemoryFileSystem.想在memory不够的时候,就把数据直接写到硬盘上。但当memory可以用的时候就用后台的一个thread把数据写到memory中。这样如果有很多文件一起读的话,就可能会减少硬盘的seek。
但是在锁进程的时候出了点问题。signal的时候,怎么都不行。竟然会抛出异常。后来才发现在signal之前是要获得锁的。

 1        wait=false;
 2        fetchLock.lock();
 3
 4        try{
 5            fetchStart.signal();
 6        }
catch(Exception e)
 7        {
 8            e.printStackTrace();
 9        }

10        fetchLock.unlock();

另外一个就是await,应该是总是在await。
                while (true{
                    fetchDone.signal();
                    
while (wait) {
                        fetchStart.await();
                    }

                    fetchDataFromDisk();
                    wait
=true;
                }
这样就可以不断的fetch数据。在想运行进程的时候就signal就可以了。

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


posts - 16, comments - 16, trackbacks - 0, articles - 0

Copyright © MichaelCao