package threadPool.thread; import io.netty.util.internal.PlatformDependent; import threadPool.task.ITask; import java.util.Queue; import java.util.concurrent.BlockingQueue; /** * Created by JinMiao * 2020/5/20. */ public class MpScMessageExecutor implements IMessageExecutor,Runnable{ private BlockingQueue<ITask> taskQueue; private Thread thread; private String threadName; @Override public void start() { taskQueue = (BlockingQueue) PlatformDependent.newMpscQueue(Integer.MAX_VALUE); thread = new Thread(this,threadName); thread.start(); } @Override public void stop() { } @Override public boolean isFull() { return taskQueue.size()==Integer.MAX_VALUE; } @Override public void execute(ITask iTask) { this.taskQueue.offer(iTask); } @Override public void run() { BlockingQueue<ITask> taskQueue = this.taskQueue; for(;;){ ITask task = null; try { task = taskQueue.take(); } catch (InterruptedException e) { } if(task!=null){ task.execute(); } } } }