7.2 Java线程模型
2016-02-04 18:36
459 查看
一. 单线程的机制: 遵循主循环/轮询机制.
单线程控制无线循环
轮讯一个事件序列来决定下一步做什么
一旦轮询装置返回信号,执行事件处理程序
直到事件处理程序完成 (如果此时事件处理程序被阻止,意味着一个线程因为等待资源时阻塞(block,挂起执行),整个程序停止运行
Note: 事件序列:
二. 多线程的机制:取消主循环/轮询机制.
一个线程可以暂停而不影响程序的其他部分。例如,当一个线程从网络读取数据或等待用户输入时产生的空闲时间可以被利用到其他地方。 多线程允许循环中在每一帧间隙中沉睡一秒而不暂停整个系统。简单说:在Java程序中出现线程阻塞,仅有一个线程暂停,其他线程继续运行。
Note: 帧是网络通信层中数据传输的最小单位。
三. 线程的状态
正在运行running
运行的程序可以被挂起(suspend)
临时中断
挂起的程序可以被恢复Resume
等待资源时候被堵塞block
四. 线程优先级
线程的优先级是用来决定何时从一个运行的线程切换到另一个。这叫“上下文转换”(context switch)。转换规则:
五. 同步性
因为多线程在你的程序中引入了一个异步行为,所以在你需要的时候必须有加强同步性的方法.
举例来说,如果你希望两个线程相互通信并共享一个复杂的数据结构,例如链表序列,你需要某些方法来确保它们没有相互冲突。也就是说,你必须防止一个线程写入数据而另一个线程正在读取链表中的数据。这个方法称为管程(monitor)
六. 异步性
多线程促成了异步性特征,异步的意思是在不同的时间点上,执行不同的任务
七. 消息传递
Java的消息传递系统允许一个线程进入一个对象的一个同步方法,然后在那里等待,直到其他线程明确通知它出来
八. Thread 类和Runnable接口
Thread类封装了线程的执行,为创建一个新的线程,你的程序必须扩展Thread 或实现Runnable接口
Thread类定义了好几种方法来帮助管理线程。本章用到的方法如表所示:
From <http://www.weixueyuan.net/view/6025.html>
单线程控制无线循环
轮讯一个事件序列来决定下一步做什么
一旦轮询装置返回信号,执行事件处理程序
直到事件处理程序完成 (如果此时事件处理程序被阻止,意味着一个线程因为等待资源时阻塞(block,挂起执行),整个程序停止运行
Note: 事件序列:
二. 多线程的机制:取消主循环/轮询机制.
一个线程可以暂停而不影响程序的其他部分。例如,当一个线程从网络读取数据或等待用户输入时产生的空闲时间可以被利用到其他地方。 多线程允许循环中在每一帧间隙中沉睡一秒而不暂停整个系统。简单说:在Java程序中出现线程阻塞,仅有一个线程暂停,其他线程继续运行。
Note: 帧是网络通信层中数据传输的最小单位。
三. 线程的状态
正在运行running
运行的程序可以被挂起(suspend)
临时中断
挂起的程序可以被恢复Resume
等待资源时候被堵塞block
四. 线程优先级
线程的优先级是用来决定何时从一个运行的线程切换到另一个。这叫“上下文转换”(context switch)。转换规则:
五. 同步性
因为多线程在你的程序中引入了一个异步行为,所以在你需要的时候必须有加强同步性的方法.
举例来说,如果你希望两个线程相互通信并共享一个复杂的数据结构,例如链表序列,你需要某些方法来确保它们没有相互冲突。也就是说,你必须防止一个线程写入数据而另一个线程正在读取链表中的数据。这个方法称为管程(monitor)
六. 异步性
多线程促成了异步性特征,异步的意思是在不同的时间点上,执行不同的任务
七. 消息传递
Java的消息传递系统允许一个线程进入一个对象的一个同步方法,然后在那里等待,直到其他线程明确通知它出来
八. Thread 类和Runnable接口
Thread类封装了线程的执行,为创建一个新的线程,你的程序必须扩展Thread 或实现Runnable接口
Thread类定义了好几种方法来帮助管理线程。本章用到的方法如表所示:
方法 | 意义 |
getName | 获得线程名称 |
getPriority | 获得线程优先级 |
jsAlive | 判定线程是否仍在运行 |
join | 等待一个线程终止 |
run | 线程的入口点. |
sleep | 在一段时间内挂起线程 |
start | 通过调用运行方法来启动线程 |
相关文章推荐
- maven项目,在spring中整合mybatis
- SpringMVC工作原理概述
- eclipse中如何通过maven插件执行mvn命令
- 【整理】Java垃圾回收机制
- 关于自增的两种方式区别(java)
- 使用javafxpackager打包
- jenkins配置多个JDK
- Java Annotation 及几个常用开源项目注解原理简析
- java中的数组与动态数组
- struts2异常处理机制
- struts2拦截器的实现原理及源码剖析
- struts2内置拦截器和自定义拦截器详解(附源码)
- java33:IO 2
- Struts2对AJAX的支持
- Struts2使用OGNL遍历各种map总结
- Struts2的OGNL遍历数组、List、简单的Map
- Struts2中 Result类型配置详解
- 如何让struts2和servlet的共存
- Mybatis分页和Spring的集成
- maven项目spring框架中整合restful