All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.gemstone.gemfire.internal.tools.gfsh.app.misc.util.QueueDispatcherThread Maven / Gradle / Ivy

The newest version!
/*
 * Copyright (c) 2010-2015 Pivotal Software, Inc. All rights reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License"); you
 * may not use this file except in compliance with the License. You
 * may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
 * implied. See the License for the specific language governing
 * permissions and limitations under the License. See accompanying
 * LICENSE file.
 */
package com.gemstone.gemfire.internal.tools.gfsh.app.misc.util;

import java.util.LinkedList;
import java.util.List;
import java.util.Collections;


/**
 * 

Title:

*

Description:

*

Copyright: Copyright (c) 2004

*

Company: GemStone Systems, Inc.

* @author Dae Song Park * @version 1.0 */ public class QueueDispatcherThread extends Thread { private List list = Collections.synchronizedList(new LinkedList()); private QueueDispatcherListener queueDispatcherListener; private boolean shouldRun = true; public QueueDispatcherThread() { setDaemon(true); } public synchronized void enqueue(Object obj) { list.add(obj); this.notify(); } public synchronized Object dequeue() throws InterruptedException { while (list.size() == 0) { this.wait(1000); } return list.remove(0); } public int size() { return list.size(); } public boolean isEmpty() { return list.size() == 0; } public void setQueueDispatcherListener(QueueDispatcherListener listener) { this.queueDispatcherListener = listener; } public QueueDispatcherListener getQueueDispatcherListener() { return queueDispatcherListener; } public synchronized void run() { while (shouldRun) { try { while (list.size() == 0 && shouldRun) { this.wait(1000); } int size = list.size(); if (size > 0) { for (int i = 0; i < size; i++) { Object obj = list.remove(0); if (queueDispatcherListener != null) { queueDispatcherListener.objectDispatched(obj); } } } } catch (InterruptedException ex) { // ignore for the time being } } } public void terminate() { shouldRun = false; } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy