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多 ...
随机推荐
- [转载] TLS协议分析 与 现代加密通信协议设计
https://blog.helong.info/blog/2015/09/06/tls-protocol-analysis-and-crypto-protocol-design/?from=time ...
- poj1474Video Surveillance(半平面交)
链接 半平面交的模板题,判断有没有核.: 注意一下最后的核可能为一条线,面积也是为0的,但却是有的. #include<iostream> #include <stdio.h> ...
- java中String的常用方法
java中String的常用方法1.length() 字符串的长度 例:char chars[]={'a','b'.'c'}; String s=new String(chars); int len= ...
- 选择列表控件的使用(PickList)
需要下载picklist.dll类库配合使用 <%@ Register TagPrefix="cc1" Namespace="PickListControl&quo ...
- 面向对象的static关键字(类中的static关键字)
转自:http://blog.csdn.net/xiayefanxing/article/details/7382192 http://www.cnblogs.com/SelaSelah/archiv ...
- HTML的<body>标签详解与HTML常用的控制标记
一.<body>标签: 用于标记网页的主体,body 元素包含文档的所有内容(比如文本.超链接.图像.表格和列表等等.) 1.body标签中可用的属性: bgcolor="颜色值 ...
- tomcat集群配置
http://www.finereporthelp.com/help/24/1/3/3.html#a:4.1
- 在腾讯云上创建您的SQL Cluster(2)
版权声明:本文由李斯达原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/248 来源:腾云阁 https://www.qclo ...
- Android LayoutParams
LayoutParams继承于Android.View.ViewGroup.LayoutParams,就是布局. LayoutParams相当于一个Layout的信息包,它封装了Layout的位置.高 ...
- node下新建工程
打开控制台 输入express --view ejs 成功后有 输入cnpm install 成功后有 查看下现在的json文件,如图 用数据库的话可以键入 cnpm install --save m ...