Run Code
|
API
|
Code Wall
|
Misc
|
Feedback
|
Login
|
Theme
|
Privacy
|
Patreon
jb12.0 threads.enums
//'main' method must be in a class 'Rextester'. //Compiler version 1.8.0_111 import java.util.*; import java.lang.*; class Rextester { public static void main(String args[]) throws InterruptedException { Signals signal = Signals.RED; System.out.println(signal); TraficLights tl = new TraficLights(); Thread t = new Thread(tl, "trafic light"); t.start(); Thread.sleep(150); for(int i = 0; i<20; i++){ signal = tl.getSignal(); System.out.printf("%s:\t%s\twait time = %s %s\n", Calendar.getInstance().get(Calendar.MILLISECOND), signal, signal.getWaitTime(), t.isAlive()); //tl.waitChange(); } tl.stop(); //t.join(); for(int i =0; i<50; i++) System.out.printf("%s, stoped - %s:\t%s\twait time = %s %s\n", i, Calendar.getInstance().get(Calendar.MILLISECOND), signal, signal.getWaitTime(), t.isAlive()); } } enum Signals{ RED(150), YELLOW(30), GREEN(500); private int _waitTime; public int getWaitTime(){ return _waitTime; } Signals(int waitTime){ _waitTime = waitTime; } } class TraficLights implements Runnable{ private Signals _signal; private boolean _stop; private boolean _waiting = true; public void run(){ while(!_stop){ try{ switch(_signal){ case RED: Thread.sleep(_signal.getWaitTime()); break; case YELLOW: Thread.sleep(_signal.getWaitTime()); break; case GREEN: Thread.sleep(_signal.getWaitTime()); break; } }catch(InterruptedException e){ System.out.println("error, interrupted sleep"); System.out.println(e); } changeSignal(); _waiting = false; } } synchronized private void changeSignal(){ switch(_signal){ case RED: _signal = Signals.YELLOW; break; case YELLOW: _signal = Signals.GREEN; break; case GREEN: _signal = Signals.RED; break; } notify(); } synchronized public void waitChange(){ try{ while(_waiting) wait(); }catch(InterruptedException e){ System.out.println("error, interrupted wait"); System.out.println(e); } _waiting = true; } public void stop(){ _stop = true; } public Signals getSignal(){ return _signal; } TraficLights(Signals signal){ _signal = signal; } TraficLights(){ _signal = Signals.RED; } }
run
|
edit
|
history
|
help
0
Size and signedness of Java ints and longs
Random and count of even numbers (ver. 2)
Circular array Loop?
Hanna Rextster.com
j
Hello world
java
1a
jb14.0 tests
pow x^n