Changes

Jump to navigation Jump to search
1,250 bytes added ,  11:09, 25 April 2022
m
Line 3: Line 3:  
===With apt===
 
===With apt===
 
  <nowiki>sudo apt-add-repository ppa:webupd8team/java
 
  <nowiki>sudo apt-add-repository ppa:webupd8team/java
                                sudo apt-get update
+
                                  sudo apt-get update
                                sudo apt-get install oracle-java8-installer</nowiki>
+
                                  sudo apt-get install oracle-java8-installer</nowiki>
    
Also ensure your JAVA_HOME variable has been set to:
 
Also ensure your JAVA_HOME variable has been set to:
Line 1,096: Line 1,096:  
</syntaxhighlight>
 
</syntaxhighlight>
   −
=== Return values from threads ===
+
===Return values from threads===
 
<syntaxhighlight lang="java">
 
<syntaxhighlight lang="java">
 
import java.util.concurrent.Callable;
 
import java.util.concurrent.Callable;
 +
import java.util.concurrent.ExecutorService;
 +
import java.util.concurrent.Future;
    
class CallableTask implements Callable<String> {
 
class CallableTask implements Callable<String> {
Line 1,113: Line 1,115:  
}
 
}
   −
public class CallableRunner throws InterruptedException, Exec... {
+
public class CallableRunner throws InterruptedException, ExecutionException {
 
     public static void main(String[] args){
 
     public static void main(String[] args){
 
         ExecutorService executorService = Executors.newFixedThreadPoool(1);
 
         ExecutorService executorService = Executors.newFixedThreadPoool(1);
Line 1,120: Line 1,122:  
         String welcomeMessage = welcomeFuture.get();
 
         String welcomeMessage = welcomeFuture.get();
 
         System.out.print("\nMain completed")
 
         System.out.print("\nMain completed")
 +
        executorService.shutdown();
 +
    }
 +
}
 +
</syntaxhighlight>
 +
 +
=== Multiple callable runner ===
 +
<syntaxhighlight lang="java">
 +
import java.util.concurrent.Callable;
 +
import java.util.concurrent.ExecutorService;
 +
import java.util.concurrent.Future;
 +
 +
class CallableTask implements Callable<String> {
 +
 +
    public CallableTask(String name){
 +
        this.name = name;
 +
    }
 +
 +
    @Override
 +
    public String call() throws Exception {
 +
        Thread.sleep(1000);
 +
        return "Hello " + name;
 +
    }
 +
}
 +
 +
public class MultipleCallableRunner throws InterruptedException, ExecutionException {
 +
    public static void main(String[] args){
 +
        ExecutorService executorService = Executors.newFixedThreadPoool(3);
 +
 +
        List<CallableTask> tasks = List.of(new CallableTask("Manolo"), new CallableTask("Pedro"));
 +
 +
        List<Future<String>> results = executorService.invokeAll(tasks);
 +
        // String result = executorService.invokeAny(tasks);  // returns only 1 the fastest
 +
        for (Future<String> result:results){
 +
            System.out.println(result.get());
 +
        }
 +
       
 +
        System.out.print("\nMain completed")
 +
        executorService.shutdown();
 
     }
 
     }
 
}
 
}

Navigation menu