`
yysct2005
  • 浏览: 87607 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Java线程:线程的调度-守护线程

阅读更多
Java线程:线程的调度-守护线程
 
守护线程与普通线程写法上基本么啥区别,调用线程对象的方法setDaemon(true),则可以将其设置为守护线程。
 
守护线程使用的情况较少,但并非无用,举例来说,JVM的垃圾回收、内存管理等线程都是守护线程。还有就是在做数据库应用时候,使用的数据库连接池,连接池本身也包含着很多后台线程,监控连接个数、超时时间、状态等等。
 
setDaemon方法的详细说明:
public final void setDaemon(boolean on)将该线程标记为守护线程或用户线程。当正在运行的线程都是守护线程时,Java 虚拟机退出。    
  该方法必须在启动线程前调用。    

  该方法首先调用该线程的 checkAccess 方法,且不带任何参数。这可能抛出 SecurityException(在当前线程中)。    


  参数
    on - 如果为 true,则将该线程标记为守护线程。    
  抛出:    
    IllegalThreadStateException - 如果该线程处于活动状态。    
    SecurityException - 如果当前线程无法修改该线程。
  另请参见
    isDaemon(), checkAccess()

 
/**
* Java线程:线程的调度-守护线程
*
* @author leizhimin 2009-11-4 9:02:40
*/

public class Test {
        public static void main(String[] args) {
                Thread t1 = new MyCommon();
                Thread t2 = new Thread(new MyDaemon());
                t2.setDaemon(true);        //设置为守护线程

                t2.start();
                t1.start();
        }
}

class MyCommon extends Thread {
        public void run() {
                for (int i = 0; i < 5; i++) {
                        System.out.println("线程1第" + i + "次执行!");
                        try {
                                Thread.sleep(7);
                        } catch (InterruptedException e) {
                                e.printStackTrace();
                        }
                }
        }
}

class MyDaemon implements Runnable {
        public void run() {
                for (long i = 0; i < 9999999L; i++) {
                        System.out.println("后台线程第" + i + "次执行!");
                        try {
                                Thread.sleep(7);
                        } catch (InterruptedException e) {
                                e.printStackTrace();
                        }
                }
        }
}
 
后台线程第0次执行!
线程1第0次执行!
线程1第1次执行!
后台线程第1次执行!
后台线程第2次执行!
线程1第2次执行!
线程1第3次执行!
后台线程第3次执行!
线程1第4次执行!
后台线程第4次执行!
后台线程第5次执行!
后台线程第6次执行!
后台线程第7次执行!

Process finished with exit code 0
 
从上面的执行结果可以看出:
前台线程是保证执行完毕的,后台线程还没有执行完毕就退出了。
 
实际上:JRE判断程序是否执行结束的标准是所有的前台执线程行完毕了,而不管后台线程的状态,因此,在使用后台县城时候一定要注意这个问题。

本文出自 “熔 岩” 博客,请务必保留此出处http://lavasoft.blog.51cto.com/62575/221845

分享到:
评论

相关推荐

    java多线程编程总结

    Java线程:线程的调度-守护线程 Java线程:线程的同步-同步方法 Java线程:线程的同步-同步块 Java线程:并发协作-生产者消费者模型 Java线程:并发协作-死锁 Java线程:volatile关键字 Java线程:新特征-线程池 ...

    Java多线程编程总结

    Java线程:线程的调度-守护线程 Java线程:线程的同步-同步方法 Java线程:线程的同步-同步块 Java线程:并发协作-生产者消费者模型 Java线程:并发协作-死锁 Java线程:volatile关键字 Java线程:新特征-...

    java多线程笔记

    Java线程:线程的调度-守护线程 28 Java线程:线程组 30 Java线程:线程的同步 33 一、 同步方法 35 二、 同步块 36 三、 volatile关键字 38 四、 使用synchronized关键字要注意以下四点 39 五、 关于同步和锁定的...

    Java 线程总结

    Java线程:线程的调度-守护线程 Java线程:线程的同步-同步方法 Java线程:线程的同步-同步块 Java线程:并发协作-生产者消费者模型 Java线程:并发协作-死锁 Java线程:volatile关键字 Java线程:新特征-线程池 ...

    java线程详解

    Java线程:线程的调度-休眠 Java线程:volatile关键字 Java线程:新特征-线程池 一、固定大小的线程池 二、单任务线程池 三、可变尺寸的线程池 四、延迟连接池 五、单任务延迟连接池 六、自定义线程池 Java...

    线程 JAVA java线程 java线程第3版 java线程第2版第3版合集

    电子书相关:包含4个有关JAVA线程的电子书(几乎涵盖全部有关线程的书籍) OReilly.Java.Threads.3rd.Edition....第七章 Java线程调度例子 第八章 和同步相关的高级主题 第九章 多处理器机器上的并行化 第十章 线程组

    java多线程与进程调度

    java多线程与进程调度,针对多线程和进程的讲解

    深入研究java的几个类--Java多线程编程总结

    线程调度是值按照特定的机制为多个线程分配CPU的使用权。 调度的模式有两种:分时调度和抢占式调度。分时调度是所有线程轮流获得CPU使用权,并平均分配每个线程占用CPU的时间;抢占式调度是根据线程的优先级别来获取...

    java 多线程设计模式 进程详解

    第七章 Java线程调度例子 线程池 循环调度 作业调度 总结 第八章 和同步相关的高级主题 同步术语 预防死锁 锁饥饿 非线程安全的类 总结 第九章 多处理器机器上的并行化 单线程程序并行化 内层循环线程化 循环...

    Java多线程与线程安全实践-基于Http协议的断点续传(源码)

    接下来,设计并实现一个断点续传下载工具,包括用户界面设计、任务管理、线程调度、文件存储等模块。最后,对实现的下载工具进行测试和优化,包括功能测试、性能测试和用户体验测试等。 通过本毕业设计题目的研究和...

    八字java源码-sudoku-solver-c-sharp:sudoku-solver-c-sharp

    系统以线程为基础进行调度。 例如,操作系统运行P1进程的T1线程20ms,然后存储剩余位置,这次切换到P1进程的T2线程。 然后P2进程和P3进程的线程以同样的方式运行。 再次,该过程继续。 在具有多个微处理器 ...

    matlab终止以下代码-ECS-150-Project-2---User-level-thread-library:ECS150:项目#2-

    matlab终止以下代码ECS-150-Project-2 ...以循环方式调度线程的执行 提供线程同步机制以加入其他线程 抢占先机,即提供基于中断的调度程序 约束条件 您的库必须使用C编写,并使用GCC进行编译,并且只能使用(ak

    重大软院操作系统实验二:线程调度

    重大软院操作系统实验二:线程调度,计算机操作系统原理,linux

    进程调度算法模拟器(java语言)(操作系统课程设计)(一看即懂)(基于MVC模式的Swing界面简单演示)

    进程调度算法模拟器,模拟了3种调度算法 (FIFO,多级轮转反馈,时间片). 界面设计使用到MVC模式,以及线程技术等等 ------------------------------------ 运行方法:直接双击"进程调度算法模拟器.jar"文件 (请确保你的...

    java多线程处理大数据

    java多线程处理大数据,可根据配置的线程数,任务去调度处理

    4种常用Java线程锁的特点,性能比较、使用场景.pdf

    4种常用Java线程锁的特点,性能比较、使用场景 线程(thread)是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发...

    java_thread_cn.rar_Java 线程池_java thread books_java线程_线程池_线程池调度

    中文文档,其目录如下: 线程中一些基本术语和概念 线程之间的通讯 Java线程调度 线程池 工作队列

    java线程(什么是线程)详解

    详解了什么是线程 什么是线程的创建 线程周期 线程调度

Global site tag (gtag.js) - Google Analytics