#107 JavaDoc improvements for Async Method Invocation example
This commit is contained in:
		@@ -3,29 +3,24 @@ package com.iluwatar.async.method.invocation;
 | 
				
			|||||||
import java.util.concurrent.Callable;
 | 
					import java.util.concurrent.Callable;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * <p>
 | 
					 | 
				
			||||||
 * This application demonstrates the async method invocation pattern. Key parts of the pattern are
 | 
					 * This application demonstrates the async method invocation pattern. Key parts of the pattern are
 | 
				
			||||||
 * <code>AsyncResult</code> which is an intermediate container for an asynchronously evaluated value,
 | 
					 * <code>AsyncResult</code> which is an intermediate container for an asynchronously evaluated value,
 | 
				
			||||||
 * <code>AsyncCallback</code> which can be provided to be executed on task completion and
 | 
					 * <code>AsyncCallback</code> which can be provided to be executed on task completion and
 | 
				
			||||||
 * <code>AsyncExecutor</code> that manages the execution of the async tasks.
 | 
					 * <code>AsyncExecutor</code> that manages the execution of the async tasks.
 | 
				
			||||||
 * </p>
 | 
					 | 
				
			||||||
 * <p>
 | 
					 * <p>
 | 
				
			||||||
 * The main method shows example flow of async invocations. The main thread starts multiple tasks with
 | 
					 * The main method shows example flow of async invocations. The main thread starts multiple tasks with
 | 
				
			||||||
 * variable durations and then continues its own work. When the main thread has done it's job it collects
 | 
					 * variable durations and then continues its own work. When the main thread has done it's job it collects
 | 
				
			||||||
 * the results of the async tasks. Two of the tasks are handled with callbacks, meaning the callbacks are
 | 
					 * the results of the async tasks. Two of the tasks are handled with callbacks, meaning the callbacks are
 | 
				
			||||||
 * executed immediately when the tasks complete.
 | 
					 * executed immediately when the tasks complete.
 | 
				
			||||||
 * </p>
 | 
					 | 
				
			||||||
 * <p>
 | 
					 * <p>
 | 
				
			||||||
 * Noteworthy difference of thread usage between the async results and callbacks is that the async results
 | 
					 * Noteworthy difference of thread usage between the async results and callbacks is that the async results
 | 
				
			||||||
 * are collected in the main thread but the callbacks are executed within the worker threads. This should be
 | 
					 * are collected in the main thread but the callbacks are executed within the worker threads. This should be
 | 
				
			||||||
 * noted when working with thread pools.
 | 
					 * noted when working with thread pools.
 | 
				
			||||||
 * </p>
 | 
					 | 
				
			||||||
 * <p>
 | 
					 * <p>
 | 
				
			||||||
 * Java provides its own implementations of async method invocation pattern. FutureTask, CompletableFuture
 | 
					 * Java provides its own implementations of async method invocation pattern. FutureTask, CompletableFuture
 | 
				
			||||||
 * and ExecutorService are the real world implementations of this pattern. But due to the nature of parallel
 | 
					 * and ExecutorService are the real world implementations of this pattern. But due to the nature of parallel
 | 
				
			||||||
 * programming, the implementations are not trivial. This example does not take all possible scenarios into
 | 
					 * programming, the implementations are not trivial. This example does not take all possible scenarios into
 | 
				
			||||||
 * account but rather provides a simple version that helps to understand the pattern.
 | 
					 * account but rather provides a simple version that helps to understand the pattern.
 | 
				
			||||||
 * </p>
 | 
					 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * @see AsyncResult
 | 
					 * @see AsyncResult
 | 
				
			||||||
 * @see AsyncCallback
 | 
					 * @see AsyncCallback
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -2,6 +2,13 @@ package com.iluwatar.async.method.invocation;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
import java.util.Optional;
 | 
					import java.util.Optional;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * 
 | 
				
			||||||
 | 
					 * AsyncCallback interface
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * @param <T>
 | 
				
			||||||
 | 
					 * 
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
public interface AsyncCallback<T> {
 | 
					public interface AsyncCallback<T> {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/**
 | 
						/**
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -3,6 +3,11 @@ package com.iluwatar.async.method.invocation;
 | 
				
			|||||||
import java.util.concurrent.Callable;
 | 
					import java.util.concurrent.Callable;
 | 
				
			||||||
import java.util.concurrent.ExecutionException;
 | 
					import java.util.concurrent.ExecutionException;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * 
 | 
				
			||||||
 | 
					 * AsyncExecutor interface
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
public interface AsyncExecutor {
 | 
					public interface AsyncExecutor {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/**
 | 
						/**
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -2,6 +2,12 @@ package com.iluwatar.async.method.invocation;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
import java.util.concurrent.ExecutionException;
 | 
					import java.util.concurrent.ExecutionException;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * 
 | 
				
			||||||
 | 
					 * AsyncResult interface
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * @param <T>
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
public interface AsyncResult<T> {
 | 
					public interface AsyncResult<T> {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/**
 | 
						/**
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -6,7 +6,9 @@ import java.util.concurrent.ExecutionException;
 | 
				
			|||||||
import java.util.concurrent.atomic.AtomicInteger;
 | 
					import java.util.concurrent.atomic.AtomicInteger;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 | 
					 * 
 | 
				
			||||||
 * Implementation of async executor that creates a new thread for every task.
 | 
					 * Implementation of async executor that creates a new thread for every task.
 | 
				
			||||||
 | 
					 * 
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
public class ThreadAsyncExecutor implements AsyncExecutor {
 | 
					public class ThreadAsyncExecutor implements AsyncExecutor {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user