public class Sample179 implements Runnable {

	private final Object lockObj_ = new Object();

	private boolean isSuspend_ = false;

	public boolean getSuspend() {
		synchronized (lockObj_) {
			return isSuspend_;
		}
	}
	public void changeSusupend() {
		synchronized (lockObj_) {
			isSuspend_ = !isSuspend_;
			if (isSuspend_) {
				lockObj_.notifyAll();
			}
		}
	}

	@Override
	public void run() {
		try {
			while (Thread.currentThread().isAlive()) {
				synchronized (lockObj_) {
					while (getSuspend()) {
						lockObj_.wait(1000);
					}
				}
				System.out.print('a');
				Thread.sleep(1000);
			}
		} catch (InterruptedException ex) {
			ex.printStackTrace();
		}
	}


	public static void main(String[] args) {
		final Sample179 sample = new Sample179();
		Thread thread = new Thread(sample);
		thread.setDaemon(true);
		thread.start();
		try {
			while (true) {
				char c = (char) System.in.read();
				if (c == 'q') break;
				if (c == 'p') {
					sample.changeSusupend();
				}
			}
		} catch (IOException ex) {
			ex.printStackTrace();
		}
	}
}
