package com.cooly;import java.util.LinkedList;/*** @author coolyqq*Simular impressão de fila de impressora*Classe de distribuição*/classe pública DataDistribute {instância estática privada de DataDistribute = null;byte estático final privado[] obj = novo byte[0];//Mecanismo de bloqueio private LinkedList<DataDistributeEntity> tasks = null;//Tarefas de distribuição private boolean isColse = true;private DataDistribute() {tasks = new LinkedList<DataDistributeEntity>();}/*** @return* Obter instância*/public static DataDistribute getInstance(){if(instance == null){synchronized (obj) {if(instance == null) {instance = new DataDistribute();}}}return instance ;}/*** @param entidade* Adicionar tarefa*/public void addTask(DataDistributeEntity entidade){sincronizado (obj) {tasks.add(entity);}}/*** @param entidade* Adicionar tarefas imediatamente*/public void addSpeedTask(DataDistributeEntityentity){sincronizado (obj) {tasks.addFirst(entity); }}public void start(ICallBack retorno de chamada){if(tasks==null||tasks.isEmpty()||!this.isColse){return;}else{this.isColse = false;}while(true){DataDistributeEntity entidade = tarefas.poll(); if(entidade==null){this.isColse = true;break;}callback.call(entity);tasks.remove(entity);}System.out.println("fsf");}public boolean isColse() {return isColse;}public void setColse(boolean isColse) { this.isColse = isColse;}}