java多线程简单操作和实际项目开发如何写
来源:互联网 发布:天下3用数据流量玩 编辑:程序博客网 时间:2024/06/05 23:56
先上代码:
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是类,也是实现RunnableThread.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的类。在写完代码逻辑后,交给线程池处理的过程;
其中,在实际的操作中一定要有返回值的情况。一样的操作
0 0
- java多线程简单操作和实际项目开发如何写
- 在java项目的实际开发和应用中
- java多线程的基本概念和简单操作
- DSL如何和实际项目结合简化方案编写简单思考
- iOS开发多线程在实际项目中的运用
- iOS开发多线程在实际项目中的运用
- 如何使用SSH框架开发实际项目-开发规范
- 如何使用SSH框架开发实际项目-开发规范
- 如何使用SSH框架开发实际项目-开发规范
- 如何在实际项目开发中使用LinQ技术
- 如何写一个java项目
- 延展操作符和解构的简单实际应用
- 延展操作符和解构的简单实际应用
- 延展操作符和解构的简单实际应用
- 如何获取Java项目的实际物理路径
- java 项目简单操作 mysql
- 项目开发中如何写说明文档
- 数据库中如何写视图,以及视图项目中实际应用
- MySQL 常用函数 加密函数
- JUnit 测试
- mybatis中insert操作获取id的操作
- 使用PullToRefresh时停止刷新方法失灵
- ABAP表控制Table Control设计
- java多线程简单操作和实际项目开发如何写
- japans的搭建(使用p12)
- Gridview各种易忘点总结
- iOS 打包 上架流程
- intellij idea+gitos/github
- js不断向上滚动代码,滚动一边就停止如何解决,如何让标题循环滚动
- idm 再进军
- Eclipse导入的项目中的中文都是乱码,如何解决?
- 查看磁盘空间占用情况