public class Nucleus extends Thread { public int fire_rate; private Axon[] axons; private int threshold; boolean is_end; public Nucleus( Axon[] a , int t ) { fire_rate = 0; axons = a; threshold = t; is_end = false; } public Nucleus( int t ) { fire_rate = 0; threshold = t; is_end = true; } public synchronized void excite(int i) { fire_rate += i; } public synchronized void inhibit( int i) { fire_rate -= i; } public int getRate() { return fire_rate; } public void delay(int time) { try {Thread.sleep(time);} catch (Exception e) {} } public void run() { while (true) { //System.out.print( fire_rate + " "); if (fire_rate < 0) fire_rate += 1; else if (fire_rate > 0) fire_rate -= 1; if (fire_rate > threshold && !is_end) { for (int i = 0 ; i < axons.length ; i++) axons[i].fire(); } delay( (250 - Math.abs(fire_rate)) / 20 ); } } }