Changes based on review feedback.
This commit is contained in:
@ -3,7 +3,7 @@ layout: pattern
|
|||||||
title: Event-based Asynchronous
|
title: Event-based Asynchronous
|
||||||
folder: event-asynchronous
|
folder: event-asynchronous
|
||||||
permalink: /patterns/event-asynchronous/
|
permalink: /patterns/event-asynchronous/
|
||||||
categories: Other
|
categories: Concurrency
|
||||||
tags:
|
tags:
|
||||||
- difficulty-intermediate
|
- difficulty-intermediate
|
||||||
- performance
|
- performance
|
||||||
|
@ -106,23 +106,23 @@ public class App {
|
|||||||
try {
|
try {
|
||||||
// Create an Asynchronous event.
|
// Create an Asynchronous event.
|
||||||
int aEventId = eventManager.createAsync(60);
|
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);
|
eventManager.start(aEventId);
|
||||||
System.out.println("Event [" + aEventId + "] has been started.");
|
System.out.println("Async Event [" + aEventId + "] has been started.");
|
||||||
|
|
||||||
// Create a Synchronous event.
|
// Create a Synchronous event.
|
||||||
int sEventId = eventManager.create(60);
|
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);
|
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(aEventId);
|
||||||
eventManager.status(sEventId);
|
eventManager.status(sEventId);
|
||||||
|
|
||||||
eventManager.cancel(aEventId);
|
eventManager.cancel(aEventId);
|
||||||
System.out.println("Event [" + aEventId + "] has been stopped.");
|
System.out.println("Async Event [" + aEventId + "] has been stopped.");
|
||||||
eventManager.cancel(sEventId);
|
eventManager.cancel(sEventId);
|
||||||
System.out.println("Event [" + sEventId + "] has been stopped.");
|
System.out.println("Sync Event [" + sEventId + "] has been stopped.");
|
||||||
|
|
||||||
} catch (MaxNumOfEventsAllowedException | LongRunningEventException | EventDoesNotExistException
|
} catch (MaxNumOfEventsAllowedException | LongRunningEventException | EventDoesNotExistException
|
||||||
| InvalidOperationException e) {
|
| InvalidOperationException e) {
|
||||||
|
@ -75,7 +75,7 @@ public class Event implements IEvent, Runnable {
|
|||||||
long endTime = currentTime + (eventTime * 1000);
|
long endTime = currentTime + (eventTime * 1000);
|
||||||
while (System.currentTimeMillis() < endTime) {
|
while (System.currentTimeMillis() < endTime) {
|
||||||
try {
|
try {
|
||||||
Thread.sleep(5000); // Sleep for 5 seconds.
|
Thread.sleep(1000); // Sleep for 1 second.
|
||||||
} catch (InterruptedException e) {
|
} catch (InterruptedException e) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -79,4 +79,56 @@ public class EventAsynchronousTest {
|
|||||||
System.out.println(e.getMessage());
|
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());
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user