被问及 Java 多线程,多会想到 Thread, Runnable,更通常是用 new Thread(){public void run(){...}}.start() 来启动一个线程。那都是 JDK 1.5 之前的年代了,现在还这么回答就 Out 了。用用 JDK 1.5 给我们带来的 java.util.concurrent 吧,更酷了。这里不涉及它的并发集合类,同步互斥机制,只说线程及线程池的应用举例。
1. 新的启动线程的方式:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
public static void main(String[] args) throws Exception { Callable<Integer> callable = new Callable<Integer>() { public Integer call() throws Exception { System.out.println("callable executed."); return new Random().nextInt(100); } }; FutureTask<Integer> future = new FutureTask<Integer>(callable); new Thread(future).start(); System.out.println("do your things here"); System.out.println(future.get()); } |