workqueue.java
来自「华为java接口反编译结果!其中包含其所有接口实现过程」· Java 代码 · 共 65 行
JAVA
65 行
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 + =
减小字号Ctrl + -
显示快捷键?