Java学习日记102:线程池和第三种线程的实现
来源:互联网 发布:华为网络机顶盒密码 编辑:程序博客网 时间:2024/05/20 11:25
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();}}public class MyRunnable implements Runnable {@Overridepublic void run() {for (int x = 0; x < 100; x++) {System.out.println(Thread.currentThread().getName() + ":" + x);}}}
线程的第三种实现方案:
import java.util.concurrent.Callable;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();}}/* * 线程求和案例 */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;}}
0 0
- Java学习日记102:线程池和第三种线程的实现
- java学习日记(线程)
- java学习日记_100:线程的第二种实现方式——实现Runnable接口
- 学习日记java 线程之间的同步
- java学习日记_98:线程的概述
- 学习日记 java之线程
- Java学习日记番外篇:线程
- java实现的第三方线程池框架
- -学习日记-线程的总结
- Java基础第十二天学习日记_线程、线程的同步、线程间通讯
- Java线程和线程池学习笔记
- 黑马程序员java学习日记六 线程的学习总结
- java学习日记_99:线程的设置优先级和常用方法
- 学习日记java 线程的停止,jion,yield
- 【我的Java笔记】多线程_多线程实现的第三种方式(线程池)
- Java线程的学习_线程池
- Java线程第三课:线程的两种创建方式
- Java线程池的几种实现和区别
- Android事件分发机制完全解析,带你从源码的角度彻底理解(上)
- MySQL重装-cannot create windows service for mysql
- 蓝桥杯之排列数字
- numpy.random.seed()的使用
- c++第一次实验(2)
- Java学习日记102:线程池和第三种线程的实现
- muduo中buffer的设计
- C++Primer第五版 第十一章习题答案(1~10)
- Java Web项目中解决中文乱码方法总结
- 蓝桥杯——指针部分基础内容回顾二(2017.2.27)
- poj2398 Toy Storage【叉乘】
- PAT 1028
- Android Jni使用案例
- HDU 2859 Phalanx