![JAR search and dependency download from the Maven repository](/logo.png)
org.eclipse.osgi.internal.log.SerializedTaskQueue Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of org.eclipse.osgi Show documentation
Show all versions of org.eclipse.osgi Show documentation
This is org.eclipse.osgi jar used by Scout SDK
/*******************************************************************************
* Copyright (c) 2006, 2012 Cognos Incorporated, IBM Corporation and others
* All rights reserved. This program and the accompanying materials are made
* available under the terms of the Eclipse Public License v1.0 which
* accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
******************************************************************************/
package org.eclipse.osgi.internal.log;
import java.util.LinkedList;
/**
* SerializedTaskQueue is a utility class that will allow asynchronous but serialized execution of tasks
*/
public class SerializedTaskQueue {
private static final int MAX_WAIT = 5000;
private final LinkedList tasks = new LinkedList();
private Thread thread;
private final String queueName;
public SerializedTaskQueue(String queueName) {
this.queueName = queueName;
}
public synchronized void put(Runnable newTask) {
tasks.add(newTask);
if (thread == null) {
thread = new Thread(queueName) {
public void run() {
Runnable task = nextTask(MAX_WAIT);
while (task != null) {
task.run();
task = nextTask(MAX_WAIT);
}
}
};
thread.start();
} else
notify();
}
synchronized Runnable nextTask(int maxWait) {
if (tasks.isEmpty()) {
try {
wait(maxWait);
} catch (InterruptedException e) {
// ignore -- we control the stack here and do not need to propagate it.
}
if (tasks.isEmpty()) {
thread = null;
return null;
}
}
return tasks.removeFirst();
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy