java编程思想笔记-并发之后台线程
来源:互联网 发布:战地1淘宝卖的账号 编辑:程序博客网 时间:2024/06/04 22:56
package com.tij.chapter1;import java.util.concurrent.CountDownLatch;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;import java.util.concurrent.ThreadFactory;import java.util.concurrent.TimeUnit;/** * * @author Allen * @date 2017-8-7 * */class DaemonThreadFactory implements ThreadFactory { @Override public Thread newThread(Runnable r) { Thread thread = new Thread(r); thread.setDaemon(true); return thread; }}class DaemonFromFactory implements Runnable { private String threadName; private CountDownLatch latch; public DaemonFromFactory(int i, CountDownLatch latch) { this.threadName = "thread-" + i; this.latch = latch; } @Override public void run() { while (true) { try { TimeUnit.MILLISECONDS.sleep(100); System.out.println(Thread.currentThread() + "--" + this); System.out.println("count--" + latch.getCount()); } catch (Exception e) { e.printStackTrace(); }finally{ latch.countDown(); } } } @Override public String toString() { return threadName; }}public class DaemonTest { public static void main(String[] args) { CountDownLatch latch = new CountDownLatch(10); ExecutorService exec = Executors .newCachedThreadPool(new DaemonThreadFactory()); for (int i = 0; i < 10; i++) { exec.execute(new DaemonFromFactory(i, latch)); } System.out.println("All Threads Start"); try { //latch.await(500, TimeUnit.MILLISECONDS); latch.await(); //Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } //主线程完成,则后台线程也全部中断 System.out.println("Task Stopped"); }}
后台线程的finally语句不会执行,因为父线程即main线程执行结束后,jvm会关闭所有线程,可以通过Executor来实现有序的关闭线程
阅读全文
0 0
- java编程思想笔记-并发之后台线程
- java编程思想笔记-并发之线程加入
- java编程思想笔记-并发之线程协作(一)
- java编程思想笔记-并发之线程协作(二)
- java编程思想笔记-并发之线程协作(三)
- java编程思想笔记-并发之线程协作(四)
- 并发(java编程思想)笔记
- JAVA编程思想笔记--并发
- java编程思想学习笔记:并发
- Java编程思想笔记—并发1
- java编程思想笔记---并发Callable接口
- java编程思想笔记---并发优先级
- java编程思想笔记-并发之死锁
- java编程思想笔记-并发之CountDownLatch
- java编程思想笔记-并发之CyclicBarrier
- java多线程之后台线程
- (38)21.3.8 线程本地存储---Java编程思想之并发笔记
- java编程思想笔记-并发之并发锁(一)
- 前端js小练习,动态生成乘法表
- 5-3 奥运排行榜 (25分)
- linux 下tmp目录文件怎么被删除的?
- Python学习笔记(一)-- 基础语法
- intellij idea下使用Maven搭建SpringMVC
- java编程思想笔记-并发之后台线程
- 卷积运算中5X5卷积模版的实现-verilog
- TCP/IP 概述
- java集合辅助类
- chromium之资源文件
- 剑指offer--和为S的连续正数序列
- 西电Oj-1045-黑白棋-敌对搜索
- Oracle基础 权限管理
- 笨办法学 Python · 续 练习 16:冒泡、快速和归并排序