Java多线程:概念
2016-01-10 16:08
483 查看
Java 虚拟机允许应用程序并发地运行多个执行线程。Java语言提供了多线程编程的扩展点,并给出了功能强大的线程控制API。
每个线程都有一个优先级,高优先级线程的执行优先于低优先级线程。每个线程都可以或不可以标记为一个守护程序。当某个线程中运行的代码创建一个新 Thread 对象时,该新线程的初始优先级被设定为创建线程的优先级,并且当且仅当创建线程是守护线程时,新线程才是守护程序。
当 Java 虚拟机启动时,通常都会有单个非守护线程(它通常会调用某个指定类的 main 方法)。
多线程和多进程有什么区别呢?
本质的区别在于每个进程有它自己的变量的完备集,线程则共享相同的数据。对程序来说,共享的变量使线程之间的通信比进程间的通信更加有效而简单。而且,对于某些操作系统而言,线程比进程更"轻量级",创建和销毁单个线程比发起进程的开销要小得多。
线程的分类
用户线程:Java虚拟机在它所有非守护线程已经离开后自动离开。
守护线程:守护线程则是用来服务用户线程的,如果没有其他用户线程在运行,那么就没有可服务对象,也就没有理由继续下去。
setDaemon(boolean on)方法可以方便的设置线程的Daemon模式,true为Daemon模式,false为User模式。setDaemon(boolean on)方法必须在线程启动之前调用,当线程正在运行时调用会产生异常。isDaemon方法将测试该线程是否为守护线程。值得一提的是,当你在一个守护线程中产生了其他线程,那么这些新产生的线程不用设置Daemon属性,都将是守护线程,用户线程同样。
相关文章推荐
- CXF和spring整合遇到的问题:No bean named 'cxf' is defined
- Java的安装和下载
- Jetty9+JDK8+Spring4时遇到408问题
- Spring 学习笔记 8. 尚硅谷_佟刚_Spring_使用外部属性文件
- eclipse插入mysql是数据乱码问题(转)
- spring源码编译
- Maven的pom.xml解析
- 上机题目(中级)-可怕的阶乘(Java)
- Java Swing JTable 表格【6:表格模型DefaultTableModel】
- java30.XML操作------使用Dom4j简单操作XML数据举例
- Struts2练习--基于注解方式Action配置
- leetcode笔记
- java : iBatis 2.3 起点
- 【spring配置】——spring整合Quartz定时器
- java多线程机制
- JAVA EE 平台介绍拾遗
- Java实现加密方式
- 【Java】定时器Timer的使用
- 【spring配置】——springMVC配置
- struts2 工作原理