⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 workqueue.java

📁 华为java接口反编译结果!其中包含其所有接口实现过程
💻 JAVA
字号:
package com.kelefa.cmpp.work;

import java.util.LinkedList;

public class WorkQueue
{
  private final int nThreads;
  private final PoolWorker[] threads;
  private final LinkedList queue;

  public WorkQueue( int nThreads )
  {
    this.nThreads = nThreads;
    queue = new LinkedList();
    threads = new PoolWorker[ nThreads ];

    for ( int i = 0; i < nThreads; i++ ) {
      threads[ i ] = new PoolWorker();
      threads[ i ].start();
    }
  }

  public void execute( Runnable r )
  {
    synchronized ( queue ) {
      queue.addLast( r );
      queue.notifyAll();
    }
  }

  private class PoolWorker
      extends Thread
  {
    public void run()
    {
      Runnable r;

      while ( true )
      {
	synchronized ( queue )
	{
	  while ( queue.isEmpty() ) {
	    try {
	      queue.wait();
	    }
	    catch ( InterruptedException ignored ) {
	    }
	  }

	  r = ( Runnable ) queue.removeFirst();
	}

	// If we don't catch RuntimeException,
	// the pool could leak threads
	try {
	  r.run();
	}
	catch ( RuntimeException e ) {
	  // You might want to log something here
	}
      }
    }
  }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -