/******************************************************************************* * 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();		}	}}