Java解哲学家就餐问题
来源:优易学  2011-9-12 12:11:05   【优易学:中国教育考试门户网】   资料下载   IT书店

  private void initPhils()
  {
    for( int i = 0; i< n; i++ )
    {
    phils[i] = new Philosopher( this, i );
    phils[i].setTimeSlice( generateTimeSlice());
    phils[i].setPriority( Thread.NORM_PRIORITY - 1);
  /**哲学家进程降低一级,使所有哲学家进程
  *全部初始化完毕前不会有哲学家进程抢占主线程*/
    }
    while( moreToStart() )
    {
    int i = Math.abs( r.nextInt()) % n;
    if( !phils[i].isAlive())
    {
   System.out.println( " ### Philosopher " +
   String.valueOf( i ) + " started.");
   phils[i].start();
    }
    }
    System.out.println( "\nPhilosophers Chopsticks"
   + "\n(1 = eating, 0 = thinking) (1 = taken, 0 = free)");
  }
  public int generateTimeSlice()
  {
    int ts = Math.abs(r.nextInt()) % (maxEat + 1);
    if( ts == 0 )
    ts = minEat;
    return ts;
  }
  public void dumpStatus()
  {
    for( int i = 0; i < n; i++)
    System.out.print(phils[i].getEat() ? 1 : 0);
    for( int i = n; i < maxPhils + 4; i++ )
    System.out.print(" ");
    for( int i = 0; i < n; i++)
    System.out.print(chops[i]? 1:0);
    System.out.println();
  }

上一页  [1] [2] [3] [4] [5] 下一页

责任编辑:小草

文章搜索:
 相关文章
热点资讯
资讯快报
热门课程培训