/******************************************************************************* * Copyright (c) 2000, 2015 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 * * Contributors: * IBM Corporation - initial API and implementation *******************************************************************************/ package org.eclipse.debug.jdi.tests; /** * An abstract reader that continuously reads. */ abstract public class AbstractReader { protected String fName; protected Thread fReaderThread; protected boolean fIsStopping = false; /** * Constructor * @param name */ public AbstractReader(String name) { fName = name; } /** * Continuously reads. Note that if the read involves waiting * it can be interrupted and a InterruptedException will be thrown. */ abstract protected void readerLoop(); /** * Start the thread that reads events. * */ public void start() { fReaderThread = new Thread(new Runnable() { @Override public void run() { readerLoop(); } }, fName); fReaderThread.setDaemon(true); fReaderThread.start(); } /** * Tells the reader loop that it should stop. */ public void stop() { fIsStopping = true; if (fReaderThread != null) { fReaderThread.interrupt(); } } }