java多线程简单操作和实际项目开发如何写
2016-06-15 14:08
645 查看
先上代码:
很好理解这样的多线程:
一个实现了Runnable或者继承了Thread的类。在写完代码逻辑后,交给线程池处理的过程;
其中,在实际的操作中一定要有返回值的情况。一样的操作
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; public class ClassExecutorService { /**固定线程:cpu个数加一,让一个一直处于等待状态*/ private static ExecutorService pool = Executors.newFixedThreadPool(5); /** * newSingleThreadExecutor: 产生一个ExecutorService对象,这个对象只有一个线程可用来执行任务,若任务多于一个,任务将按先后顺序执行 * newCachedThreadPool(): 产生一个ExecutorService对象,这个对象带有一个线程池,线程池的大小会根据需要调整,线程执行完任务后返回线程池,供执行下一次任务使用。 * newFixedThreadPool(int poolSize):产生一个ExecutorService对象,这个对象带有一个大小为poolSize的线程池,若任务数量大于poolSize,任务会被放在一个queue里顺序执行 * newSingleThreadScheduledExecutor:产生一个ScheduledExecutorService对象,这个对象的线程池大小为1,若任务多于一个,任务将按先后顺序执行 * newScheduledThreadPool(int poolSize): 产生一个ScheduledExecutorService对象,这个对象的线程池大小为poolSize,若任务数量大于poolSize,任务会在一个queue里等待执行 * */ /**单元测试*/ public static void main(String args[]) throws InterruptedException, ExecutionException{ //execute(Runnable command):执行Ruannable类型的任务. pool.execute(new Runnable() { public void run() { System.out.println("多线程执行"); } }); //内部类的调用方式方式 ClassExecutorService ces=new ClassExecutorService(); //submit(task):可用来提交Callable或Runnable任务,并返回代表此任务的Future对象 pool.submit(ces.new A()); //有返回值的线程: Future<?> re=pool.submit(ces.new B("执行完毕")); System.out.println(re.get().toString()); pool.shutdown(); /** * shutdown():在完成已提交的任务后关闭服务,不再接受新任务 * shutdownNow():停止所有正在执行的任务并关闭服务。 * isTerminated():测试是否所有任务都执行完毕了。 * isShutdown():测试是否该ExecutorService已被关闭 * */ } /**该类要实现Runnable接口*/ class A implements Runnable{ public void run() { System.out.println("类A执行"); try { //线程休眠一秒Thread是类,也是实现Runnable Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } } } class B implements Callable<Object>{ String param=""; public B(String param) { this.param=param; } public Object call() throws Exception { return "返回值是:"+param; } } }
很好理解这样的多线程:
一个实现了Runnable或者继承了Thread的类。在写完代码逻辑后,交给线程池处理的过程;
其中,在实际的操作中一定要有返回值的情况。一样的操作
相关文章推荐
- Eclipse导入的项目中的中文都是乱码,如何解决?
- eclipse使用git
- java 防止sql注入的方法(非原创)
- java UT,IT覆盖率报告
- Java线程与Xss
- spring boot 打war包部署,打jar包
- Java对象结构及大小计算
- Java类的初始化顺序
- 基于CXF Java 搭建Web Service (Restful Web Service与基于SOAP的Web Service混合方案)
- java 字符串,字符数组,list间的转化
- Java中如何遍历Map对象的4种方法
- FIREFOX 下载中文文件名出现乱码的java解决方案
- springmvc基础知识
- 三种加密方式
- java 生成Zip文件
- Java基础之JDK、JRE和JVM的区别与联系
- java字符串
- 使用MyBatis(七)使用java注解完成CRUD
- SpringMVC学习笔记:表单的数据回显
- JAVA_OA(六):SpringMVC登陆实例