Java by API/java.util.concurrent/ExecutorService — различия между версиями

Материал из Java эксперт
Перейти к: навигация, поиск
м (1 версия)
 
(нет различий)

Текущая версия на 14:23, 31 мая 2010

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);
    
  }
}