Java基础----线程池

来源:互联网 发布:返利网 淘宝taosave 编辑:程序博客网 时间:2024/05/16 17:08

package cn.itcast_08;public class MyRunnable implements Runnable {@Overridepublic void run() {for (int x = 0; x < 100; x++) {System.out.println(Thread.currentThread().getName() + ":" + x);}}}

package cn.itcast_08;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;/* * 线程池的好处:线程池里的每一个线程代码结束后,并不会死亡,而是再次回到线程池中成为空闲状态,等待下一个对象来使用。 *  * 如何实现线程的代码呢? * A:创建一个线程池对象,控制要创建几个线程对象。 * public static ExecutorService newFixedThreadPool(int nThreads) * B:这种线程池的线程可以执行: * 可以执行Runnable对象或者Callable对象代表的线程 * 做一个类实现Runnable接口。 * C:调用如下方法即可 * Future<?> submit(Runnable task) *<T> Future<T> submit(Callable<T> task) *D:我就要结束,可以吗? *可以。 */public class ExecutorsDemo {public static void main(String[] args) {// 创建一个线程池对象,控制要创建几个线程对象。// public static ExecutorService newFixedThreadPool(int nThreads)ExecutorService pool = Executors.newFixedThreadPool(2);// 可以执行Runnable对象或者Callable对象代表的线程pool.submit(new MyRunnable());pool.submit(new MyRunnable());//结束线程池pool.shutdown();}}

package cn.itcast_10;import java.util.concurrent.Callable;/* * 线程求和案例 */public class MyCallable implements Callable<Integer> {private int number;public MyCallable(int number) {this.number = number;}@Overridepublic Integer call() throws Exception {int sum = 0;for (int x = 1; x <= number; x++) {sum += x;}return sum;}}

package cn.itcast_10;import java.util.concurrent.ExecutionException;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;import java.util.concurrent.Future;/* * 多线程实现的方式3: *  A:创建一个线程池对象,控制要创建几个线程对象。 * public static ExecutorService newFixedThreadPool(int nThreads) * B:这种线程池的线程可以执行: * 可以执行Runnable对象或者Callable对象代表的线程 * 做一个类实现Runnable接口。 * C:调用如下方法即可 * Future<?> submit(Runnable task) *<T> Future<T> submit(Callable<T> task) *D:我就要结束,可以吗? *可以。 */public class CallableDemo {public static void main(String[] args) throws InterruptedException, ExecutionException {// 创建线程池对象ExecutorService pool = Executors.newFixedThreadPool(2);// 可以执行Runnable对象或者Callable对象代表的线程Future<Integer> f1 = pool.submit(new MyCallable(100));Future<Integer> f2 = pool.submit(new MyCallable(200));// V get()Integer i1 = f1.get();Integer i2 = f2.get();System.out.println(i1);System.out.println(i2);// 结束pool.shutdown();}}



0 0
原创粉丝点击