This is part of JavaUnitTestChallengeSolved. -- DonWells
Now lets try four threads together:
public class FourThreadsTogether extends Test { public BoundedBuffer buffer; public PutThread firstPutThread; public PutThread secondPutThread; public TakeThread firstTakeThread; public TakeThread secondTakeThread; public void setUp(){ buffer = new BoundedBuffer(); firstPutThread = new PutThread(buffer); secondPutThread = new PutThread(buffer); firstTakeThread = new TakeThread(buffer); secondTakeThread = new TakeThread(buffer);} public void runTest (){ TakeThread.resetOutput(); firstTakeThread.start(); secondTakeThread.start(); firstPutThread.start(); secondPutThread.start(); waitForTakeToFinish(); should(TakeThread.doesOuputHaveTwoOf("a"), "should get two a"); should(TakeThread.doesOuputHaveTwoOf("b"), "should get two b"); should(TakeThread.doesOuputHaveTwoOf("c"), "should get two c"); should(TakeThread.doesOuputHaveTwoOf("d"), "should get two d"); should(TakeThread.doesOuputHaveTwoOf("e"), "should get two e");} public void waitForTakeToFinish(){ try { firstTakeThread.join(1000); secondTakeThread.join(1000);} catch (InterruptedException exception) {};} }
I was expecting problems of some sort with this one, but it runs just fine.