當前位置: 首頁>>代碼示例>>Java>>正文


Java PriorityBlockingQueue.size方法代碼示例

本文整理匯總了Java中java.util.concurrent.PriorityBlockingQueue.size方法的典型用法代碼示例。如果您正苦於以下問題:Java PriorityBlockingQueue.size方法的具體用法?Java PriorityBlockingQueue.size怎麽用?Java PriorityBlockingQueue.size使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在java.util.concurrent.PriorityBlockingQueue的用法示例。


在下文中一共展示了PriorityBlockingQueue.size方法的6個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Java代碼示例。

示例1: calculaCosteAtencionVictimasFinalesAsignadas

import java.util.concurrent.PriorityBlockingQueue; //導入方法依賴的package包/類
public double calculaCosteAtencionVictimasFinalesAsignadas(double factorMultiplicativo, VictimsToRescue victims2R, MisObjetivos misObjs){

		double tiempo = 0;     //Variable para calcular el tiempo

    	PriorityBlockingQueue <Objetivo> colaobjetivos = misObjs.getMisObjetivosPriorizados();
    	int tamaniocola = colaobjetivos.size();

    	Iterator<Objetivo> it = colaobjetivos.iterator();

        if (tamaniocola==0){
        	return 0;
        }

    	while (it.hasNext()){
  		  //Hay al menos un objetivo
  	      Objetivo ob = it.next();
  	      String referenciaIdObjetivo = ob.getobjectReferenceId();

	      //Obtener la victima de la cola
	      Victim victimaActualCola = victims2R.getVictimToRescue(referenciaIdObjetivo);    	          	      
	      int prioridadVictimaActualCola = victimaActualCola.getPriority();
	      
	      tiempo = tiempo + (factorMultiplicativo*prioridadVictimaActualCola);
    	}    	    	    	
    	return tiempo;
	}
 
開發者ID:Yarichi,項目名稱:Proyecto-DASI,代碼行數:27,代碼來源:CosteRealizacionObjetivo.java

示例2: logSensorDataOnChange

import java.util.concurrent.PriorityBlockingQueue; //導入方法依賴的package包/類
/**
 * Store sensor data so that it can be published in the next publishing cycle. Unlike
 * the other log methods, this method saves the {@link #BUFFER_SIZE_FOR_ONCHANGE_SENSORS} most
 * recent sensor readings per sensor type.
 * @param data
 */
public void logSensorDataOnChange(SensorData data) {
    PriorityBlockingQueue<SensorData> newQueue =
            new PriorityBlockingQueue<SensorData>(BUFFER_SIZE_FOR_ONCHANGE_SENSORS,
                    new Comparator<SensorData>() {
        @Override
        public int compare(SensorData o1, SensorData o2) {
            return Long.compare(o1.getTimestamp(), o2.getTimestamp());
        }
    });
    PriorityBlockingQueue<SensorData> lastData = mOnChangeData.putIfAbsent(
            data.getSensorName(), newQueue);

    if (lastData == null) {
        lastData = newQueue;
    }

    // remove old entries if necessary
    while (lastData.size() >= BUFFER_SIZE_FOR_ONCHANGE_SENSORS) {
       lastData.poll();
    }

    lastData.offer(data);
}
 
開發者ID:androidthings,項目名稱:sensorhub-cloud-iot,代碼行數:30,代碼來源:CloudPublisherService.java

示例3: getIdsVictimasFinalesAsignadas

import java.util.concurrent.PriorityBlockingQueue; //導入方法依賴的package包/類
private ArrayList getIdsVictimasFinalesAsignadas(MisObjetivos misObjs, VictimsToRescue victims2R){
	ArrayList aux = new ArrayList();

	PriorityBlockingQueue <Objetivo> colaobjetivos = misObjs.getMisObjetivosPriorizados();
	int tamaniocola = colaobjetivos.size();

	Iterator<Objetivo> it = colaobjetivos.iterator();

    if (tamaniocola==0){
    	return aux;
    }
    
	int index = 0;
	while (it.hasNext()){    		
		  //Hay al menos un objetivo
	      Objetivo ob = it.next();
	      String referenciaIdObjetivo = ob.getobjectReferenceId();

         //Obtener la victima de la cola
         Victim victimaActualCola = victims2R.getVictimToRescue(referenciaIdObjetivo);  	          
         String nameVictim = victimaActualCola.getName();
       
         aux.add(index, nameVictim);
         index ++;  	        
	}
	
	return aux;
}
 
開發者ID:Yarichi,項目名稱:Proyecto-DASI,代碼行數:29,代碼來源:FinalizarSimulacionIG.java

示例4: enqueueLog

import java.util.concurrent.PriorityBlockingQueue; //導入方法依賴的package包/類
@Override
public void enqueueLog(Path log) {
  String logPrefix = DefaultWALProvider.getWALPrefixFromWALName(log.getName());
  PriorityBlockingQueue<Path> queue = queues.get(logPrefix);
  if (queue == null) {
    queue = new PriorityBlockingQueue<Path>(queueSizePerGroup, new LogsComparator());
    queues.put(logPrefix, queue);
    if (this.sourceRunning) {
      // new wal group observed after source startup, start a new worker thread to track it
      // notice: it's possible that log enqueued when this.running is set but worker thread
      // still not launched, so it's necessary to check workerThreads before start the worker
      final ReplicationSourceWorkerThread worker =
          new ReplicationSourceWorkerThread(logPrefix, queue, replicationQueueInfo, this);
      ReplicationSourceWorkerThread extant = workerThreads.putIfAbsent(logPrefix, worker);
      if (extant != null) {
        LOG.debug("Someone has beat us to start a worker thread for wal group " + logPrefix);
      } else {
        LOG.debug("Starting up worker for wal group " + logPrefix);
        worker.startup();
      }
    }
  }
  queue.put(log);
  int queueSize = logQueueSize.incrementAndGet();
  this.metrics.setSizeOfLogQueue(queueSize);
  // This will log a warning for each new log that gets created above the warn threshold
  if (queue.size() > this.logQueueWarnThreshold) {
    LOG.warn("WAL group " + logPrefix + " queue size: " + queueSize
        + " exceeds value of replication.source.log.queue.warn: " + logQueueWarnThreshold);
  }
}
 
開發者ID:fengchen8086,項目名稱:ditb,代碼行數:32,代碼來源:ReplicationSource.java

示例5: CalculaDistanciaCamino

import java.util.concurrent.PriorityBlockingQueue; //導入方法依賴的package包/類
public double CalculaDistanciaCamino(String nombreAgenteEmisor, Coordinate posicionActualRobot, Victim nuevaVictima, VictimsToRescue victims2R, MisObjetivos misObjs){

        boolean flag = true;
        double distancia = 0;     //Variable para calcular la distancia para recorrer el camino de las victimas actualmente asignadas, incluyendo la nueva victima actual que ha llegado 

        Coordinate coordinateNuevaVictima = nuevaVictima.getCoordinateVictim();         
        int prioridadNuevaVictima = nuevaVictima.getPriority();
         Objetivo ob;
    	PriorityBlockingQueue <Objetivo> colaobjetivos = misObjs.getMisObjetivosPriorizados();
    	int tamaniocola = colaobjetivos.size();
    	
        Victim victimaAnteriorCola = null;
    	Coordinate coordinateVictimaAnteriorCola = null;
    // Hacer un analisis de casos 
    // Caso 1 Hay un objetivo en la cola de objetivos pero no tiene que ver con hacerse cargo de la victima
    //        victims2R contine la nueva victima que sera la ultima almacenada
    //        El coste debe consistir en el calculo a partir de la distancia      
//        if (tamaniocola == 0 ) return  distanciaC1toC2(posicionActualRobot, coordinateNuevaVictima);
//        else if (tamaniocola == 1){
//         String refVictim = misObjs.getobjetivoMasPrioritario().getobjectReferenceId();
//            if(refVictim == null||(victims2R.getvictims2Rescue().isEmpty() ||
//                                   victims2R.getVictimToRescue(refVictim) == null )
//               ) return distanciaC1toC2(posicionActualRobot, coordinateNuevaVictima);  
//        }
        distancia= distanciaC1toC2(posicionActualRobot, coordinateNuevaVictima);
        if (tamaniocola >1 ) {
            
    	Iterator<Objetivo> it = colaobjetivos.iterator();
                        
        //Mostrar informacion del calculo de la evaluacion en ventana de trazas Evaluacion
    	//trazas.aceptaNuevaTraza(new InfoTraza("Evaluacion", "CALCULANDO DISTANCIA .......... Agente " + nombreAgenteEmisor, InfoTraza.NivelTraza.info)); 
    	int i = 1;
    	while (it.hasNext()){
    		  //Hay al menos un objetivo
    	    ob = it.next();
            if ( ob.getState()!= Objetivo.SOLVED){
    	      String referenciaIdObjetivo = ob.getobjectReferenceId();
    	      //Obtener la victima de la cola
                Victim victimaActualCola = victims2R.getVictimToRescue(referenciaIdObjetivo);    	          	      
                int prioridadVictimaActualCola = victimaActualCola.getPriority();    	          	          	      
                Coordinate coordinateVictimaActualCola = victimaActualCola.getCoordinateVictim();   	          	      
                if (flag == false){
    	    	  //terminar el recorrido por el resto de victimas de la cola
    	    	  distancia = distancia + distanciaC1toC2(coordinateVictimaAnteriorCola, coordinateVictimaActualCola);
                }
                else{     	      
                    if (prioridadVictimaActualCola >= prioridadNuevaVictima){
    	    		  	if (i==1){
    	    	    	   //distancia del robot a la nueva victima
    	    		  		distancia = distanciaC1toC2(posicionActualRobot, coordinateVictimaActualCola);
    	    		  	}
    	    		  	else{
    	    		  		distancia = distancia + distanciaC1toC2(coordinateVictimaAnteriorCola, coordinateVictimaActualCola); 
    	    		  	}
    	    		  	if (i==tamaniocola) 
    	    		  		distancia = distancia + distanciaC1toC2(coordinateVictimaActualCola, coordinateNuevaVictima);
                    }else{ //prioridadVictimaActualCola < prioridadNuevaVictima
     	    		    if (i==1){
    	    			      distancia = distanciaC1toC2(posicionActualRobot, coordinateNuevaVictima);
    	    		    }
    	    		    else {
    	    			  distancia = distancia + distanciaC1toC2(coordinateVictimaAnteriorCola, coordinateNuevaVictima);
    	    		    }
                            distancia = distancia + distanciaC1toC2(coordinateNuevaVictima, coordinateVictimaActualCola);
                            flag = false;
                        }
                    }
                    i = i + 1;
                    victimaAnteriorCola = victimaActualCola;
                    coordinateVictimaAnteriorCola = victimaAnteriorCola.getCoordinateVictim();
            }
    	} //fin del while
        }
    	//trazas.aceptaNuevaTraza(new InfoTraza("Evaluacion", 
    	//		"CalculaDistancia: Agente " + nombreAgenteEmisor + ": Distancia->" + distancia 
    	//		, InfoTraza.NivelTraza.info));       		        		                                                           		        		          		           
    	
    	return distancia;
    }
 
開發者ID:Yarichi,項目名稱:Proyecto-DASI,代碼行數:80,代碼來源:Coste.java

示例6: calculaCosteRecorrerCaminoVictimas

import java.util.concurrent.PriorityBlockingQueue; //導入方法依賴的package包/類
public double calculaCosteRecorrerCaminoVictimas(String nombreAgenteEmisor, Coordinate posicionActualRobot, VictimsToRescue victims2R, MisObjetivos misObjs){    	
    double tiempoCamino = 0;     //Variable para calcular el tiempo para recorrer el camino de las victimas asignadas        
    double tiempoAux = 0;
    
	PriorityBlockingQueue <Objetivo> colaobjetivos = misObjs.getMisObjetivosPriorizados();
	int tamaniocola = colaobjetivos.size();

	Iterator<Objetivo> it = colaobjetivos.iterator();

    if (tamaniocola==0){
    	return 0;
    }
                    
	int i = 1;
	Coordinate coordinateaux = new Coordinate(0.0,0.0,0.0);
	coordinateaux = posicionActualRobot;
	    	
	while (it.hasNext()){
 	  //Hay al menos un objetivo    		
     Objetivo ob = it.next();
     String referenciaIdObjetivo = ob.getobjectReferenceId();

   //Obtener la victima de la cola
   Victim victimaActualCola = victims2R.getVictimToRescue(referenciaIdObjetivo);
   Coordinate coordinateVictimaActualCola = victimaActualCola.getCoordinateVictim();
   if (i==1){
 	  		//distancia del robot a la nueva victima
 	  		tiempoAux = tiempoAux + distanciaC1toC2(coordinateaux, coordinateVictimaActualCola);
 	  		coordinateaux = coordinateVictimaActualCola;
 	  		i=2;
   }
   else{
 		        //distancia de una victima a la siguiente victima a visitar
 		        tiempoAux = tiempoAux + distanciaC1toC2(coordinateaux, coordinateVictimaActualCola);
 		        coordinateaux = coordinateVictimaActualCola;
 		        i++;
   }	      	      
	}        
	System.out.println("Numero de victimas asignadas al robot " + nombreAgenteEmisor + " -> " + (i-1));    	
	tiempoCamino = tiempoAux;    	
	return tiempoCamino;    	
}
 
開發者ID:Yarichi,項目名稱:Proyecto-DASI,代碼行數:43,代碼來源:Coste.java


注:本文中的java.util.concurrent.PriorityBlockingQueue.size方法示例由純淨天空整理自Github/MSDocs等開源代碼及文檔管理平台,相關代碼片段篩選自各路編程大神貢獻的開源項目,源碼版權歸原作者所有,傳播和使用請參考對應項目的License;未經允許,請勿轉載。