Java:锁不按预期工作

时间:2016-11-23 07:31:00

标签: java

我的代码中的锁定无法正常工作。我在使用锁时相当新,基本上遵循我给出的例子。

代码:

public void run(){
    int counter =0;
    EachLink nextLink=null;

    crawlStarterLock.lock();
    try{
        while (index<LIMIT){
            nextLink = theLinks.getNext(); //get the next item 

            if(nextLink == null)
            {
               sleep(DELAY);

               System.out.println(counter);
               counter++;
               index++;
               //break;

            }
            else{

                try{
                    Thread tr = new Crowler(nextLink,theLinks); //creates and runs a new thread writing the links to an html file.
                    tr.start();
                    System.out.println(counter);
                    counter++;
                }

                finally{
                    index++;
                }
            }   
        }   
    }
    catch(InterruptedException e){}//exception
    finally
    {
      crawlStarterLock.unlock();//unlocks the lock when operation is finished
      System.out.println("Hello");

    }

锁定对象在构造函数

中创建
crawlStarterLock = new ReentrantLock();

我的索引从0开始,Limit设置为100 运行此程序时的输出显示2个计数器之间的竞争条件。 我的理解是,如果对象是锁定,其他任何人都无法访问,因此对于此run方法()的另一个实例,应该打印0-100然后0-100? 所以我在这里使用锁不正确

0 个答案:

没有答案