Java多线程之后台线程不执行finally

后台线程不执行finally


package wzh.daemon;

import java.util.concurrent.TimeUnit;

class ADaemon implements Runnable {

@Override
public void run() {
try {
System.out.println("Starting ADaemon");
TimeUnit.SECONDS.sleep(1);
} catch (Exception e) {
System.out.println("Exiting via InterruptedException");
} finally {
//如果是后台线程,则finally不会被执行。
//因为主线程退出后,后台线程就自动退出了。
System.out.println("This should always run?");
}
}

}

public class DaemonsDontRunFinally {
public static void main(String[] args) {
Thread thread = new Thread(new ADaemon());
thread.setDaemon(true);
thread.start();
}
}

Java多线程之后台线程不执行finally

时间: 2024-10-14 16:22:29

Java多线程之后台线程不执行finally的相关文章

Java多线程之后台线程

将线程设置成后台线程Daemons 主线程结果后,后台线程将自动结果. package wzh.test; import java.util.concurrent.TimeUnit; class SimpleDaemons implements Runnable{ @Override public void run() { try { while (true) { TimeUnit.MILLISECONDS.sleep(100); System.out.println(Thread.curren

Java多线程——<五>后台线程(daemon)

一.后台线程(守护线程) 学一个东西,最重要的一点就是,为什么要用它? 后台线程区别于普通线程,普通线程又可以称为用户线程,只完成用户自己想要完成的任务,不提供公共服务.而有时,我们希望编写一段程序,能够提供公共的服务,保证所有用户针对该线程的请求都能有响应. 仔细来看下后台线程的定义:指在程序运行的时候在后台提供一种通用服务的线程,并且这种线程并不属于程序中不可或缺的部分. 二.实现后台线程 1.我们先定义任务及响应的线程 定义任务:Thread.yield();让线程暂停一段时间 class

Java多线程总结之线程安全队列Queue

在Java多线程应用中,队列的使用率很高,多数生产消费模型的首选数据结构就是队列.Java提供的线程安全的Queue可以分为阻塞队列和非阻塞队列,其中阻塞队列的典型例子是BlockingQueue,非阻塞队列的典型例子是ConcurrentLinkedQueue,在实际应用中要根据实际需要选用阻塞队列或者非阻塞队列. 注:什么叫线程安全?这个首先要明确.线程安全的类 ,指的是类内共享的全局变量的访问必须保证是不受多线程形式影响的.如果由于多线程的访问(比如修改.遍历.查看)而使这些变量结构被破坏

Java多线程-新特性-线程池

Sun在Java5中,对Java线程的类库做了大量的扩展,其中线程池就是Java5的新特征之一,除了线程池之外,还有很多多线程相关的内容,为多线程的编程带来了极大便利.为了编写高效稳定可靠的多线程程序,线程部分的新增内容显得尤为重要. 有关Java5线程新特征的内容全部在java.util.concurrent下面,里面包含数目众多的接口和类,熟悉这部分API特征是一项艰难的学习过程.目前有关这方面的资料和书籍都少之又少,大部分介绍线程方面书籍还停留在java5之前的知识层面上. 在Java5之

Java多线程学习之线程的同步

多线程编程要解决的一个基本问题是:共享资源的竞争.而基本上使用并发模式在解决这个问题都采用序列化访问共享资源的方法.基本原理就是当共享资源被一个任务使用时,在其上加锁,其他任务在资源被解锁之前,无法访问它.在任务对其解锁后,另一个任务就可以锁定并使用它.下面看看Java支持的线程同步机制. 1.synchronized关键字 synchronized关键字即可应用于对象相关的同步,也可用于类层次的同步(static属性): 对象上应用synchronized可以实现对象方法的同步和代码块的同步.

java多线程同步以及线程间通信详解&消费者生产者模式&死锁&Thread.join()(多线程编程之二)

本篇我们将讨论以下知识点: 1.线程同步问题的产生 什么是线程同步问题,我们先来看一段卖票系统的代码,然后再分析这个问题: [java] view plain copy print? package com.zejian.test; /** * @author zejian * @time 2016年3月12日 下午2:55:42 * @decrition 模拟卖票线程 */ public class Ticket implements Runnable { //当前拥有的票数 private 

Java多线程系列--“JUC线程池”01之 线程池架构

概要 前面分别介绍了"Java多线程基础"."JUC原子类"和"JUC锁".本章介绍JUC的最后一部分的内容——线程池.内容包括:线程池架构图线程池示例 转载请注明出处:http://www.cnblogs.com/skywang12345/p/3509903.html 线程池架构图 线程池的架构图如下: 1. Executor 它是"执行者"接口,它是来执行任务的.准确的说,Executor提供了execute()接口来执行

Java 多线程 编程 教程 线程的运行与控制

在多个线程同时运行时,就存在多个线程之间的调度控制.资源分配等.本节就来讲解线程使用中的一系列控制命令和使用方法 线程的启动start().join()与停止stop() 线程的休眠sleep().挂起yield 线程的同步synchronized 线程的同步锁机制:wait().notify()和notifyAll() start()启动线程,当线程创建之后,利用start方法启动线程.此外还可以利用join方法让线程立即执行 sleep()让当前线程暂停一段时间之后继续执行.sleep()方

Java多线程设计模式(4)线程池模式

前序: Thread-Per-Message Pattern,是一种对于每个命令或请求,都分配一个线程,由这个线程执行工作.它将“委托消息的一端”和“执行消息的一端”用两个不同的线程来实现.该线程模式主要包括三个部分: 1,Request参与者(委托人),也就是消息发送端或者命令请求端 2,Host参与者,接受消息的请求,负责为每个消息分配一个工作线程. 3,Worker参与者,具体执行Request参与者的任务的线程,由Host参与者来启动. 由于常规调用一个方法后,必须等待该方法完全执行完毕