package money.thread; import money.Log; public class AddRunner extends ExecutableRunner { private static final String TAG = "AddRunner"; public int a; public AddRunner(Object readyTaskListLock, String description, int exclusiveValue, int type) { super(readyTaskListLock, description, exclusiveValue, type); a = 0; } @Override public void run() { while (true) { a++; Log.d(TAG, "description:" + description + " a:" + a); try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } if (a == 5) { synchronized (readyTaskListLock) { // TODO: modify state readyTaskListLock.notify(); } return; } } } }
package money; import money.thread.AddRunner; import money.thread.ExecutableRunner; public class Test { private static final String TAG = "Test"; public static void main(String[] args) { Processor processor = Processor.instance(); processor.start(); // wait for the initialization of processor try { Thread.sleep(300); } catch (InterruptedException e) { e.printStackTrace(); } for (int i = 0; i < 4; i++) { ExecutableRunner runner = new AddRunner(processor.getReadyTaskListLock(), "" + i, 0, 0); processor.addTask(runner); try { Thread.sleep(2000); } catch (InterruptedException e) { e.printStackTrace(); } } Log.d(TAG, "to add other task...."); } }