线程属性整理
来源:互联网 发布:知到app下载安装 编辑:程序博客网 时间:2024/06/10 17:41
1、优先级
Thread的属性priority为优先级字段,在java中优先级从1到10依次提高,默认为5。
有长耗时的操作线程,一般建议设为 低 优先级,确保cpu资源不会被占用很久;
频繁阻塞(休眠或I/O)的线程设置为 高 优先级。
操作系统采用时间片(CPU 单次执行某线程的时间)的形式来调度线程的运行,线程被 CPU 调用的时间超过它的时间片后,就会发生线程调度。线程的优先级可以在一定程度上影响它得到时间片的多少,也就是被处理的机会。
2、守护线程
Java 中,线程也分三六九等。守护线程相当于小弟,做一些后台调度、支持性工作,比如 JVM 的垃圾回收、内存管理等线程都是守护线程。
Thread 中有个布尔值标识 daemon 当前线程是否为守护线程,daemon 属性需要在调用线程的 start() 方法之前调用。
一个进程中,如果所有线程都退出了,Java 虚拟机就会退出。注意了,这里的“所有”就不包括守护线程,也就是说,当除守护线程外的其他线程都结束后,Java 虚拟机就会退出,然后将守护进程终止。
这里需要注意的是,由于上述特性,Java 虚拟机退出后,在守护线程中的 finally 块中的代码不一定执行。
package com.thread;public class DeamonThreadTest { static class DeamonThread extends Thread{ public void run() { try { Thread.sleep(2000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } finally { System.err.println(Thread.currentThread().getName() + " final block run..."); } } } public static void main(String[] args) { DeamonThread dt = new DeamonThread(); dt.setDaemon(true); dt.start(); }}
上述代码中将线程设置为守护线程,由于 main 线程启动 DaemonThread 后就结束,此时虚拟机中没有非守护线程,虚拟机也会退出,守护进程被终止,但是它的 finally 块中的内容却没有被调用。
因此,守护线程中不能依靠 finally 块进行资源关闭和清理。
3、生命周期
(待续)
阅读全文
0 0
- 线程属性整理
- 线程整理
- 【First step to the last one】JAVA多线程整理(三)--线程属性、线程的等待唤醒、线程锁释放
- 线程属性
- 线程属性
- 线程属性
- 线程属性
- 线程属性
- 线程属性
- 线程属性
- 线程属性
- 线程属性
- 线程属性
- 线程属性
- 线程属性
- 线程属性
- 线程与线程属性
- linux 线程 线程属性
- 【实验】老式的Docker Swarm 集群操作与单机Docker的不同之处
- 彻底解决前端开发在前后端分离过程中的跨域问题
- 学习笔记:MySQL基准测试之tpcc-mysql
- Leetcode 545. Boundary of Binary Tree
- 时间戳的几种方法
- 线程属性整理
- 初学驱动开发-文件+注册表
- Objective-C 快速排序代码
- C语言编程优化运行速度
- 《HeadFirst设计模式》书摘-装饰者模式/抽象工厂模式/工厂方法模式
- easyui入门指南—01 easyui入门
- OpenCV安装配置(VS2013+OpenCV3.0)
- JAVA输入输出流的总结
- Kali Linux中文输入法安装