horiuchi #6348(2008/05/27 00:30 GMT) [ Java ] Rating0/0=0.00
Javaでは、STDINがバッファされてしまうため Enterが押下されるまで読み込めません。 そのため、下記のコードでは p + Enterと、q + EnterでSuspendとQuitします。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
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(); } } }
Rating0/0=0.00-0+
[ reply ]
horiuchi
#6348()
[
Java
]
Rating0/0=0.00
Javaでは、STDINがバッファされてしまうため Enterが押下されるまで読み込めません。 そのため、下記のコードでは p + Enterと、q + EnterでSuspendとQuitします。
Rating0/0=0.00-0+
[ reply ]