java 面向对象编程--第十四章 多线程编程
1、 多任务处理有两种类型:基于进程和基于线程。
2、 进程是指一种“自包容”的运行程序,由操作系统直接管理,直接运行,有自己的地址空间,每个进程一开启都会消耗内存。
3、 线程是进程内部单一的顺序控制流。一个进程拥有多个线程。多个线程共享一个进程的内存空间。
4、 基于进程的特点是允许计算机同时运行两个或更多的程序。
5、 基于线程的多任务处理环境中,线程是最小的处理单位。
6、 基于进程所需的开销更少:每个进程都需要操作系统为其分配独立的内存空间;同意进程中的所有线程都在同意内存空间中工作,这些线程可以共享同一块内存和系统资源。
7、 主线程:main方法一运行,就开启主线程。
8、 主线程特点:最先开始、最后结束、产生其他的子线程、回收资源
9、 创建线程的两种方式:声明一个Thread类的子类,并覆盖run()方法;声明一个Runnable接口的类,并实现run()方法。
10、 在线程类中,调用start()方法和run()方法的区别:如果直接调用run()方法,是普通方法调用,不会在主线程基础上,开启子线程是单线程;调用start()方法,会在主线程基础上开启子线程,是多线程。
11、 线程有八种状态:
新建:new的方式产生一个线程对象。
就绪:start启动运行run()方法。
运行:执行run()方法。
死亡:线程run()方法执行完毕。
等待:Object里的wait()方法。
睡眠:调用线程sleep()方法。
挂起:yield()方法,线程显式出让CPU控制权。
阻塞:等待IO事件输入。
12、 线程优先级:当两个或多个线程,同时处于就绪状态,等待CPU执行,优先级高的线程优先得到执行。优先级分为1-10级,数字越大,优先级越高。
13、 线程同步(线程安全)当两个或两个以上的进程同时操作同一个资源时,在同一时间只允许一个线程进行访问,别的线程等待。
14、 关键字synchronized 同步,可以作为方法的修饰符,表示当一个线程正在访问资源时,其它进程只能等待。当该线程结束对该资源的访问时,才允许别的线程访问。
15、 同步造成的结果:数据安全、效率低下。
16、 同步有两种方式:同步方法、同步块。
同步方法:public synchronized void test(){}
同步块:public void run(){
synchronized(ob){}
}
17、 wait()和sleep()方法的区别:
- wait方法在Object类中定义,sleep方法在线程类Thread中定义;
- wait方法只能放在同步方法或同步块中,表示当前线程对资源进行等待,sleep方法可以放在任何位置,表示当前线程休眠;
- wait方法要释放对象锁,sleep方法不会释放对象锁;
- wait方法使用后,线程需要notify唤醒后才能继续执行,而sleep在休眠结束后,线程自动继续执行。
18、 线程之间通过wait(),notify(),notifyAll()方法通信。
19、 两个线程在两个同步对象上循环依赖时,发生死循环。
java 面向对象编程--第十四章 多线程编程的更多相关文章
- Java面向对象笔记 • 【第10章 Swing编程初级应用】
全部章节 >>>> 本章目录 10.1 JFrame窗口容器 10.1.1 Swing介绍 10.1.2 JFrame窗口容器应用 JFrame常用方法 10.1.3 实践 ...
- Java面向对象笔记 • 【第9章 JDBC编程】
全部章节 >>>> 本章目录 9.1 JDBC基础 9.1.1 JDBC简介 9.1.2 JDBC常用API简介 JDBC 常用API功能说明 9.1.3 JDBC编程步骤 ...
- java 面向对象(二十四):interface:接口
interface:接口1.使用说明: 1.接口使用interface来定义 * 2.Java中,接口和类是并列的两个结构 * 3.如何定义接口:定义接口中的成员 * * 3.1 JDK7及以前:只能 ...
- java 面向对象(三十四):泛型三 自定义泛型类、泛型接口、泛型方法
1.举例: [Order.java] public class Order<T> { String orderName; int orderId; //类的内部结构就可以使用类的泛型 T ...
- Windows核心编程 第十四章 虚拟内存
第1 4章 虚 拟 内 存 <这一章没啥,是说的几个内存相关的函数 > 14.1 系统信息 许多操作系统的值是根据主机而定的,比如页面的大小,分配粒度的大小等.这些值决不应该用硬编码的形式 ...
- 【读书笔记】C#高级编程 第二十四章 文件和注册表操作
(一)文件和注册表 对于文件系统操作,相关的类几乎都在System.IO名称空间中,而注册表操作由System.Win32名称空间中的类来处理. (二)管理文件系统 System.MarshalByR ...
- 【读书笔记】C#高级编程 第十四章 内存管理和指针
(一)后台内存管理 1.值数据类型 Windows使用一个虚拟寻址系统,该系统把程序可用的内存地址映射到硬件内存中的实际地址,该任务由Windows在后台管理(32位每个进程可使用4GB虚拟内存,64 ...
- “全栈2019”Java多线程第三十四章:超时自动唤醒被等待的线程
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java多 ...
- “全栈2019”Java多线程第二十四章:等待唤醒机制详解
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java多 ...
随机推荐
- HDU5886 Tower Defence 【两遍树形dp】【最长链预处理】
题意:N个点的一棵带权树.切掉某条边的价值为切后两树直径中的最大值.求各个边切掉后的价值和(共N-1项). 解法一: 强行两遍dp,思路繁琐,维护东西较多: dis表示以i为根的子树的直径,dis2表 ...
- poj1673EXOCENTER OF A TRIANGLE
链接 据说这题是垂心..数学太弱没有看出来,写了分朴实无华的代码.. 旋转三边得到图中的外顶点,然后连接三角形顶点求交点,交上WA..觉得没什么错误就去看了下discuss,发现都在说精度问题,果断开 ...
- java读取excel文件数据
package com.smp.server.Ctrl; import java.io.File;import java.io.FileInputStream;import java.io.FileN ...
- python中super关键字的用法
http://python.jobbole.com/86787/ class A: def __init__(self): print "enter A" print ...
- Eclipse中导入外部jar包(zhuan)
http://jingyan.baidu.com/article/ca41422fc76c4a1eae99ed9f.html ************************************* ...
- python语法笔记(三)
1. 动态类型 python的变量不需要声明,在赋值时,变量可以赋值为任意的值.这和Python的动态类型语言相关. python对象是存在于内存中的实体,代码中写对象名,只是指向该对象的引用.引用和 ...
- R语言实战
教材目录 第一部分 入门 第一章 R语言介绍 第二章 创建数据集 第三章 图形初阶 第四章 基本数据管理 第五章 高级数据管理 第二部分 基本方法 第六章 基本图形 第七章 基本统计方法 第三部分 中 ...
- dom4j解析xml作为测试数据
构造函数: public AppTestData(File xmlFile) throws Exception { file = xmlFile; try { saxReader = new SAXR ...
- JSP action elements - JavaBean
语法 描述 jsp:include 在页面被请求的时候引入一个文件. jsp:useBean 寻找或者实例化一个JavaBean. jsp:setProperty 设置JavaBean的属性. jsp ...
- python 练习 1
from math import sqrt from datetime import date def k1(): #某人是1999年9月29日生日 #问到2006年9月29日他活了多少天 a=dat ...