Thread----ExecutorService
来源:互联网 发布:七天网络阅卷公司 编辑:程序博客网 时间:2024/06/05 05:27
Thread
* 继续积累,网上看到一篇不错的文章,对于基础薄弱的我来说很有帮助,在此做一个笔记,希望自己能不断提升!*
直接贴贴上我的练习代码,欢迎看官指教。
package com.liumeng.doit;import java.util.concurrent.Executor;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;import java.util.concurrent.ScheduledExecutorService;import java.util.concurrent.TimeUnit;/** * @author LiuMeng 线程练习 * ************************************************************ * 原版:http://www.trinea.cn/android/java-android-thread-pool/ * ************************************************************ * 【仿版】 * (去除修饰性语言.....) * new Thread的弊端: * new Thread(new Runnable(){ * @Override * public void run(){ * * } * }).start(); * 弊端: 1.每次new Thread新建对象性能差 * 2.线程缺乏统一管理,可能无限制新建线程 ,相互之间竞争,及可能占用过多系统资源导致死机或oom * 3.缺乏更多功能,如定时执行,定期执行,线程中断 * 相比new Thread,Java提供的四种线程池的好处在于: * 1.重用存在的线程,减少对象创建消亡的的开销,性能佳 * 2.可有效控制最大并发线程数,提高系统资源的使用率,同时避免过多资源竞争,避免堵塞。 * 3.提供定时执行,定期执行,单线程,并发数控制等功能 * *************************************************************************************************** * * Java线程池 * Java通过Executor提供四种线程池,分别为: * 一、newCachedThreadPool: 创建一个可缓存的线程池,如果线程池长度超过处理需要,可灵活收回空闲线程,若无可回收,则新建线程 * 二、newScheduledThreadPool: 创建一个定长线程池,支持定期及周期性任务执行 * 三、newSingleThreadPool: 创建一个单线程化的线程池,他只会用唯一的工作线程来执行任务,保证所有的任务按照指定的顺序(FIFO,LIFO,优先级)执行 * 四、newFixedThreadPool: 创建一个定长线程池,可控制最大并发数,超出的线程在队列中等待 * ************************************************************************************************** * * */public class ThreadTest { static ExecutorService fixedThread = Executors.newFixedThreadPool(3); /** * @param args */ public static void main(String[] args) { cachedThread(); fixedThread(); scheduledThread(); } // 缓存线程池 static ExecutorService cachedThread = Executors.newCachedThreadPool(); public static void cachedThread() { cachedThread.execute(new Runnable() { public void run() { for (int i = 0; i < 100; i++) { final int index = i; try { Thread.sleep(1000); } catch (Exception e) { // TODO: handle exception } System.out.println("SECOND:"+index+"s"); } } }); } // 定时线程池//----------延时执行任务 static ScheduledExecutorService scheduledThread = Executors .newScheduledThreadPool(5); static int i = 0; public static void scheduledThread() { scheduledThread.schedule(new Runnable() { public void run() { // TODO Auto-generated method stub System.out.println("3s后执行一次:" + (i++)); } }, 3, TimeUnit.SECONDS); scheduledThread.scheduleAtFixedRate(new Runnable() { public void run() { // TODO Auto-generated method stub System.out.println("10s之后开始执行,然后每隔三秒执行一次:" + (i++)); } }, 10, 3, TimeUnit.SECONDS); } // 定长线程池 public static void fixedThread() { for (int i = 0; i < 100; i++) { final int index = i; fixedThread.execute(new Runnable() { public void run() { try { System.out.println("fixedThread:" + index); Thread.sleep(2000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }); } }// }
欢迎指教!本人小白,谢谢!
0 0
- Thread----ExecutorService
- Thread & ExecutorService & ThreadPoolExecutor 总览
- ExecutorService产生的Thread命名
- ExecutorService OutOfMemoryError: thread creation failed
- multi-thread(三)ExecutorService
- ExecutorService
- ExecutorService
- ExecutorService
- ExecutorService
- ExecutorService
- ExecutorService
- ExecutorService
- ExecutorService
- ExecutorService
- ExecutorService
- ExecutorService
- ExecutorService
- ExecutorService
- 简单三步通过Builder模式来实现Android顶部导航TopBar
- 寻找前k大的数
- CSS3后代选择器和同级选择器简介和实例
- 堆区和栈区的区别
- unity3d--动态加载资源和查找资源的方式(1)
- Thread----ExecutorService
- grunt[mismatched:define]
- springmvc(五)springmvc和mybatis整合
- 2014年终总结
- LeetCode-49-Group Anagrams(哈希)-Medium
- 共享锁(S锁)和排它锁(X锁)
- ROS naviagtion analysis: costmap_2d--Layer
- IOS之UIWebView的使用
- iOS沙盒机制(sandBox)