parent
e0d24b6780
commit
0459f337cd
|
@ -0,0 +1,20 @@
|
|||
package com.baeldung.concurrent.parameter;
|
||||
|
||||
import java.util.concurrent.Callable;
|
||||
import java.util.stream.IntStream;
|
||||
|
||||
public class AverageCalculator implements Callable<Double> {
|
||||
|
||||
int[] numbers;
|
||||
|
||||
public AverageCalculator(int... parameter) {
|
||||
this.numbers = parameter == null ? new int[0] : parameter;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Double call() throws Exception {
|
||||
return IntStream.of(this.numbers)
|
||||
.average()
|
||||
.orElse(0d);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,32 @@
|
|||
package com.baeldung.concurrent.parameter;
|
||||
|
||||
import java.util.concurrent.Callable;
|
||||
import java.util.stream.IntStream;
|
||||
|
||||
public class ParameterizedThreadExample {
|
||||
|
||||
public static void parameterisedThreadAnonymousClass() {
|
||||
final String parameter = "123";
|
||||
Thread parameterizedThread = new Thread(new Runnable() {
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
System.out.println(Thread.currentThread()
|
||||
.getName() + " : " + parameter);
|
||||
}
|
||||
});
|
||||
|
||||
parameterizedThread.start();
|
||||
}
|
||||
|
||||
public static Callable<Integer> sumCalculator(int... numbers) {
|
||||
return () -> numbers != null ? IntStream.of(numbers)
|
||||
.sum() : 0;
|
||||
}
|
||||
|
||||
public static Callable<Double> averageCalculator(int... numbers) {
|
||||
return () -> numbers != null ? IntStream.of(numbers)
|
||||
.average()
|
||||
.orElse(0d) : 0d;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,43 @@
|
|||
package com.baeldung.parameters;
|
||||
|
||||
import com.baeldung.concurrent.parameter.AverageCalculator;
|
||||
import org.junit.Test;
|
||||
|
||||
import java.util.concurrent.ExecutorService;
|
||||
import java.util.concurrent.Executors;
|
||||
import java.util.concurrent.Future;
|
||||
import java.util.stream.IntStream;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
|
||||
public class ParameterizedThreadUnitTest {
|
||||
|
||||
@Test
|
||||
public void whenSendingParameterToCallable_thenSuccessful() throws Exception {
|
||||
ExecutorService executorService = Executors.newSingleThreadExecutor();
|
||||
Future<Double> result = executorService.submit(new AverageCalculator(1, 2, 3));
|
||||
try {
|
||||
assertEquals(Double.valueOf(2.0), result.get());
|
||||
} finally {
|
||||
executorService.shutdown();
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void whenParametersToThreadWithLamda_thenParametersPassedCorrectly() throws Exception {
|
||||
ExecutorService executorService = Executors.newFixedThreadPool(2);
|
||||
int[] numbers = new int[] { 4, 5, 6 };
|
||||
try {
|
||||
Future<Integer> sumResult = executorService.submit(() -> IntStream.of(numbers)
|
||||
.sum());
|
||||
Future<Double> averageResult = executorService.submit(() -> IntStream.of(numbers)
|
||||
.average()
|
||||
.orElse(0d));
|
||||
assertEquals(Integer.valueOf(15), sumResult.get());
|
||||
assertEquals(Double.valueOf(5.0), averageResult.get());
|
||||
} finally {
|
||||
executorService.shutdown();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue