当前位置: 首页>>代码示例>>Java>>正文


Java PriorityBlockingQueue.poll方法代码示例

本文整理汇总了Java中java.util.concurrent.PriorityBlockingQueue.poll方法的典型用法代码示例。如果您正苦于以下问题:Java PriorityBlockingQueue.poll方法的具体用法?Java PriorityBlockingQueue.poll怎么用?Java PriorityBlockingQueue.poll使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在java.util.concurrent.PriorityBlockingQueue的用法示例。


在下文中一共展示了PriorityBlockingQueue.poll方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。

示例1: testPriorityQueue

import java.util.concurrent.PriorityBlockingQueue; //导入方法依赖的package包/类
public void testPriorityQueue() throws Exception {
    PriorityBlockingQueue<Priority> queue = new PriorityBlockingQueue<>();
    List<Priority> priorities = Arrays.asList(Priority.values());
    Collections.shuffle(priorities, random());

    for (Priority priority : priorities) {
        queue.add(priority);
    }

    Priority prevPriority = null;
    while (!queue.isEmpty()) {
        if (prevPriority == null) {
            prevPriority = queue.poll();
        } else {
            assertThat(queue.poll().after(prevPriority), is(true));
        }
    }
}
 
开发者ID:justor,项目名称:elasticsearch_my,代码行数:19,代码来源:PrioritizedExecutorsTests.java

示例2: testDrainToN

import java.util.concurrent.PriorityBlockingQueue; //导入方法依赖的package包/类
/**
 * drainTo(c, n) empties first min(n, size) elements of queue into c
 */
public void testDrainToN() {
    PriorityBlockingQueue q = new PriorityBlockingQueue(SIZE * 2);
    for (int i = 0; i < SIZE + 2; ++i) {
        for (int j = 0; j < SIZE; j++)
            assertTrue(q.offer(new Integer(j)));
        ArrayList l = new ArrayList();
        q.drainTo(l, i);
        int k = (i < SIZE) ? i : SIZE;
        assertEquals(k, l.size());
        assertEquals(SIZE - k, q.size());
        for (int j = 0; j < k; ++j)
            assertEquals(l.get(j), new Integer(j));
        do {} while (q.poll() != null);
    }
}
 
开发者ID:AdoptOpenJDK,项目名称:openjdk-jdk10,代码行数:19,代码来源:PriorityBlockingQueueTest.java

示例3: 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

示例4: testContains

import java.util.concurrent.PriorityBlockingQueue; //导入方法依赖的package包/类
/**
 * contains(x) reports true when elements added but not yet removed
 */
public void testContains() {
    PriorityBlockingQueue q = populatedQueue(SIZE);
    for (int i = 0; i < SIZE; ++i) {
        assertTrue(q.contains(new Integer(i)));
        q.poll();
        assertFalse(q.contains(new Integer(i)));
    }
}
 
开发者ID:AdoptOpenJDK,项目名称:openjdk-jdk10,代码行数:12,代码来源:PriorityBlockingQueueTest.java

示例5: main

import java.util.concurrent.PriorityBlockingQueue; //导入方法依赖的package包/类
/**
 * @param args
 */
public static void main(String[] args) {
	/*
	 * Priority queue to store the events
	 */
	PriorityBlockingQueue<Event> queue = new PriorityBlockingQueue<>();

	/*
	 * An array to store the five Thread objects
	 */
	Thread taskThreads[] = new Thread[5];

	/*
	 * Create the five threads to execute five tasks
	 */
	for (int i = 0; i < taskThreads.length; i++) {
		Task task = new Task(i, queue);
		taskThreads[i] = new Thread(task);
	}

	/*
	 * Start the five threads
	 */
	for (int i = 0; i < taskThreads.length; i++) {
		taskThreads[i].start();
	}

	/*
	 * Wait for the finalization of the five threads
	 */
	for (int i = 0; i < taskThreads.length; i++) {
		try {
			taskThreads[i].join();
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
	}

	/*
	 * Write the events in the console
	 */
	System.out.printf("Main: Queue Size: %d\n", queue.size());
	for (int i = 0; i < taskThreads.length * 1000; i++) {
		Event event = queue.poll();
		System.out.printf("Thread %s: Priority %d\n", event.getThread(), event.getPriority());
	}
	System.out.printf("Main: Queue Size: %d\n", queue.size());
	System.out.printf("Main: End of the program\n");
}
 
开发者ID:PacktPublishing,项目名称:Java-9-Concurrency-Cookbook-Second-Edition,代码行数:52,代码来源:Main.java


注:本文中的java.util.concurrent.PriorityBlockingQueue.poll方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。