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多 ...
随机推荐
- iOS - OC RunLoop 运行循环/消息循环
1.RunLoop 1)运行循环: 运行循环在 iOS 开发中几乎不用,但是概念的理解却非常重要. 同一个方法中的代码一般都在同一个运行循环中执行,运行循环监听 UI 界面的修改事件,待本次运行循环结 ...
- 控制执行流程 Thinking in Java 第四章
4.1 true 和 false *Java 不允许将一个数字作为布尔类型(虽然在C和C++中可以),使用时需要条件表达式将其转换为布尔类型: 如下: if( a!= 0) 4.2 if-else 4 ...
- postgresql如何实现group_concat功能
MySQL有个聚集函数group_concat, 它可以按group的id,将字段串联起来,如 表:id name---------------1 A2 B1 B SELECT id, group_c ...
- Kafka 消息存储及检索(作者:杜亦舒)
Kafka 消息存储及检索 原创 2016-02-29 杜亦舒 性能与架构 Kafka是一个分布式的消息队列系统,消息存储在集群服务器的硬盘Kafka中可以创建多个消息队列,称为topic,消息的生产 ...
- windows下重新安装TCP/IP协议栈
一.windows重装TCP/IP协议 前两天在windows下安装开发环境的时候,把系统的TCP/IP协议栈给搞跪了,导致系统无法ping localhost.无法在程序中创建socket等 ...
- Hbase之原子性插入
/** * Created by similarface on 16/8/16. */ import java.io.IOException; import org.apache.hadoop.con ...
- Scroller 实现的弹性回弹的LinearLayout
由于公司业务发展,多app需求很少,被调到java后台开发接口三个月了,还要我继续做 java,最近有点想换工作,不得不重新看看基础知识了. 晚上看到了滑动的实现方式,平滑滑package com.e ...
- [ 转]Android快速开发–使用ORMLite操作数据库
OrmLite是一个数据库操作辅助的开源框架,主要面向Java语言.在Android面向数据库开发中,是一个比较流行的开源框架,方便操作而且功能强大,今天来学习一下,最近的项目中也有所涉及,写个博客来 ...
- reveal 1.6.3 本机破解及使用
reveal 强大的iOS UI调试工具 1: 去官网下载最新版本:1.6.3 http://revealapp.com/download/ 2: 安装到mac上,即,解压下载的包,把app拖到mac ...
- java 集合(Set1)
----------------|Collection(为什么要画这个图?学多了之后该忘了) --------------------------|List --------------------- ...