- 浏览: 5680 次
最新评论
文章列表
ExecutorService中submit和execute的区别
在Java5之后,并发线程这块发生了根本的变化,最重要的莫过于新的启动、调度、管理线程的一大堆API了。在Java5以后,通过Executor来启动线程比用Thread的start()更好。在新特征中,可以很容易控制线程的启动、执行和关闭过程,还可以很容易使用线程池的特性。
一、创建任务
任务就是一个实现了Runnable接口的类。
创建的时候实run方法即可。
二、执行任务
package ThreadDemo;
import java.util.Date;
/*生产者(Producer)将产品交给店员(check),而消费者(Customer)从店员出取走产品。
店员一次只能维持固有数量的产品(比如20)。如果生产者试图生产更多的产品,店员会叫生产者停一下。
如果店中有空位,店员会叫生产者生产。如果店中没有产品了,会告诉消费者等一下。如果店中有产品了
再通知消费者来取走。
*
*分析1
*1:是否涉及到多线程的问题?是!生产者,消费者
*2:是否会涉及到共享数据?是
*3:此共享数据是谁?产品的数量
*4:是 ...
package ThreadDemo;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
...
package Reflect;
/*如何编写工具类:
* 方法一:
* 1.把工具方法做成非static方法,
* 2.把工具类做成单例的。
* 那么要调用工具方法,必须先得到工具类。再调用方法
* 方法二:
* 1.把工具方法做成static方法
* 2.把工具类所有构造器全部私有化,或者把工具加上abstract的。
* 这么做的目的就是为了全部是类去调用工具方法。
*
* */
//根据反射的对象工厂,专门用来生成对象。为了使其他方法类也可以使用该方法,特意将该方法抽取到该类中。
//单例模式:Enum
public enum Bea ...