Java by API/java.util.concurrent/ExecutorService
Содержание
ExecutorService: awaitTermination(long timeout, TimeUnit unit)
import java.io.IOException;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;
public class MainClass {
ExecutorService executor = Executors.newFixedThreadPool(3);
public void start() throws IOException {
int i=0;
while (!executor.isShutdown())
executor.submit(new MyThread(i++));
}
public void shutdown() throws InterruptedException {
executor.shutdown();
executor.awaitTermination(30, TimeUnit.SECONDS);
executor.shutdownNow();
}
public static void main(String argv[]) throws Exception {
new MainClass().start();
}
}
class MyThread implements Runnable {
private int i;
MyThread(int i) {
this.i = i;
}
public void run() {
System.out.println("I am in thread:"+i);
}
}
ExecutorService: execute(Runnable command)
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class Main {
public static void main(String[] args) {
PrintTask task1 = new PrintTask("thread1");
PrintTask task2 = new PrintTask("thread2");
PrintTask task3 = new PrintTask("thread3");
System.out.println("Starting threads");
ExecutorService threadExecutor = Executors.newCachedThreadPool();
threadExecutor.execute(task1); // start task1
threadExecutor.execute(task2); // start task2
threadExecutor.execute(task3); // start task3
threadExecutor.shutdown(); // shutdown worker threads
System.out.println("Threads started, main ends\n");
}
}
class PrintTask implements Runnable {
private int sleepTime;
private String threadName;
public PrintTask(String name) {
threadName = name;
sleepTime = 1000;
}
public void run() {
try {
System.out.printf("%s going to sleep for %d milliseconds.\n", threadName, sleepTime);
Thread.sleep(sleepTime); // put thread to sleep
} catch (InterruptedException exception) {
exception.printStackTrace();
}
System.out.printf("%s done sleeping\n", threadName);
}
}
ExecutorService: shutdown()
import java.io.IOException;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;
public class MainClass {
ExecutorService executor = Executors.newFixedThreadPool(3);
public void start() throws IOException {
int i=0;
while (!executor.isShutdown())
executor.submit(new MyThread(i++));
}
public void shutdown() throws InterruptedException {
executor.shutdown();
executor.awaitTermination(30, TimeUnit.SECONDS);
executor.shutdownNow();
}
public static void main(String argv[]) throws Exception {
new MainClass().start();
}
}
class MyThread implements Runnable {
private int i;
MyThread(int i) {
this.i = i;
}
public void run() {
System.out.println("I am in thread:"+i);
}
}
ExecutorService: shutdownNow()
import java.io.IOException;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;
public class MainClass {
ExecutorService executor = Executors.newFixedThreadPool(3);
public void start() throws IOException {
int i=0;
while (!executor.isShutdown())
executor.submit(new MyThread(i++));
}
public void shutdown() throws InterruptedException {
executor.shutdown();
executor.awaitTermination(30, TimeUnit.SECONDS);
executor.shutdownNow();
}
public static void main(String argv[]) throws Exception {
new MainClass().start();
}
}
class MyThread implements Runnable {
private int i;
MyThread(int i) {
this.i = i;
}
public void run() {
System.out.println("I am in thread:"+i);
}
}
ExecutorService: submit(Runnable task)
import java.io.IOException;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;
public class MainClass {
ExecutorService executor = Executors.newFixedThreadPool(3);
public void start() throws IOException {
int i=0;
while (!executor.isShutdown())
executor.submit(new MyThread(i++));
}
public void shutdown() throws InterruptedException {
executor.shutdown();
executor.awaitTermination(30, TimeUnit.SECONDS);
executor.shutdownNow();
}
public static void main(String argv[]) throws Exception {
new MainClass().start();
}
}
class MyThread implements Runnable {
private int i;
MyThread(int i) {
this.i = i;
}
public void run() {
System.out.println("I am in thread:"+i);
}
}