Changes based on review feedback.

This commit is contained in:
WSSIA
2016-10-03 21:05:11 +01:00
parent 69cab15d75
commit 12544caa75
4 changed files with 60 additions and 8 deletions

View File

@ -3,7 +3,7 @@ layout: pattern
title: Event-based Asynchronous
folder: event-asynchronous
permalink: /patterns/event-asynchronous/
categories: Other
categories: Concurrency
tags:
- difficulty-intermediate
- performance

View File

@ -106,23 +106,23 @@ public class App {
try {
// Create an Asynchronous event.
int aEventId = eventManager.createAsync(60);
System.out.println("Event [" + aEventId + "] has been created.");
System.out.println("Async Event [" + aEventId + "] has been created.");
eventManager.start(aEventId);
System.out.println("Event [" + aEventId + "] has been started.");
System.out.println("Async Event [" + aEventId + "] has been started.");
// Create a Synchronous event.
int sEventId = eventManager.create(60);
System.out.println("Event [" + sEventId + "] has been created.");
System.out.println("Sync Event [" + sEventId + "] has been created.");
eventManager.start(sEventId);
System.out.println("Event [" + sEventId + "] has been started.");
System.out.println("Sync Event [" + sEventId + "] has been started.");
eventManager.status(aEventId);
eventManager.status(sEventId);
eventManager.cancel(aEventId);
System.out.println("Event [" + aEventId + "] has been stopped.");
System.out.println("Async Event [" + aEventId + "] has been stopped.");
eventManager.cancel(sEventId);
System.out.println("Event [" + sEventId + "] has been stopped.");
System.out.println("Sync Event [" + sEventId + "] has been stopped.");
} catch (MaxNumOfEventsAllowedException | LongRunningEventException | EventDoesNotExistException
| InvalidOperationException e) {

View File

@ -75,7 +75,7 @@ public class Event implements IEvent, Runnable {
long endTime = currentTime + (eventTime * 1000);
while (System.currentTimeMillis() < endTime) {
try {
Thread.sleep(5000); // Sleep for 5 seconds.
Thread.sleep(1000); // Sleep for 1 second.
} catch (InterruptedException e) {
return;
}

View File

@ -79,4 +79,56 @@ public class EventAsynchronousTest {
System.out.println(e.getMessage());
}
}
@Test
public void testFullSynchronousEvent() {
EventManager eventManager = new EventManager();
try {
int eventTime = 5;
int sEventId = eventManager.create(eventTime);
assertTrue(eventManager.getEventPool().size() == 1);
eventManager.start(sEventId);
long currentTime = System.currentTimeMillis();
long endTime = currentTime + (eventTime + 5 * 1000); // +5 to give a bit of buffer time for event to complete
// properly.
while (System.currentTimeMillis() < endTime) {
}
assertTrue(eventManager.getEventPool().size() == 0);
} catch (MaxNumOfEventsAllowedException | LongRunningEventException | EventDoesNotExistException
| InvalidOperationException e) {
System.out.println(e.getMessage());
}
}
@Test
public void testFullAsynchronousEvent() {
EventManager eventManager = new EventManager();
try {
int eventTime = 5;
int aEventId1 = eventManager.createAsync(eventTime);
int aEventId2 = eventManager.createAsync(eventTime);
int aEventId3 = eventManager.createAsync(eventTime);
assertTrue(eventManager.getEventPool().size() == 3);
eventManager.start(aEventId1);
eventManager.start(aEventId2);
eventManager.start(aEventId3);
long currentTime = System.currentTimeMillis();
long endTime = currentTime + (eventTime + 5 * 1000); // +5 to give a bit of buffer time for event to complete
// properly.
while (System.currentTimeMillis() < endTime) {
}
assertTrue(eventManager.getEventPool().size() == 0);
} catch (MaxNumOfEventsAllowedException | LongRunningEventException | EventDoesNotExistException e) {
System.out.println(e.getMessage());
}
}
}