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 面向对象编程--第十四章 多线程编程的更多相关文章

  1. Java面向对象笔记 • 【第10章 Swing编程初级应用】

    全部章节   >>>> 本章目录 10.1 JFrame窗口容器 10.1.1 Swing介绍 10.1.2 JFrame窗口容器应用 JFrame常用方法 10.1.3 实践 ...

  2. Java面向对象笔记 • 【第9章 JDBC编程】

    全部章节   >>>> 本章目录 9.1 JDBC基础 9.1.1 JDBC简介 9.1.2 JDBC常用API简介 JDBC 常用API功能说明 9.1.3 JDBC编程步骤 ...

  3. java 面向对象(二十四):interface:接口

    interface:接口1.使用说明: 1.接口使用interface来定义 * 2.Java中,接口和类是并列的两个结构 * 3.如何定义接口:定义接口中的成员 * * 3.1 JDK7及以前:只能 ...

  4. java 面向对象(三十四):泛型三 自定义泛型类、泛型接口、泛型方法

    1.举例: [Order.java] public class Order<T> { String orderName; int orderId; //类的内部结构就可以使用类的泛型 T ...

  5. Windows核心编程 第十四章 虚拟内存

    第1 4章 虚 拟 内 存 <这一章没啥,是说的几个内存相关的函数 > 14.1 系统信息 许多操作系统的值是根据主机而定的,比如页面的大小,分配粒度的大小等.这些值决不应该用硬编码的形式 ...

  6. 【读书笔记】C#高级编程 第二十四章 文件和注册表操作

    (一)文件和注册表 对于文件系统操作,相关的类几乎都在System.IO名称空间中,而注册表操作由System.Win32名称空间中的类来处理. (二)管理文件系统 System.MarshalByR ...

  7. 【读书笔记】C#高级编程 第十四章 内存管理和指针

    (一)后台内存管理 1.值数据类型 Windows使用一个虚拟寻址系统,该系统把程序可用的内存地址映射到硬件内存中的实际地址,该任务由Windows在后台管理(32位每个进程可使用4GB虚拟内存,64 ...

  8. “全栈2019”Java多线程第三十四章:超时自动唤醒被等待的线程

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java多 ...

  9. “全栈2019”Java多线程第二十四章:等待唤醒机制详解

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java多 ...

随机推荐

  1. [转载] C++ 多线程编程总结

    原文: http://www.cnblogs.com/zhiranok/archive/2012/05/13/cpp_multi_thread.html 在开发C++程序时,一般在吞吐量.并发.实时性 ...

  2. Handler知识点详解

    Handler是在多线程之间使用的,用于线程之间进行通信. 要想知道为什么需要Handler就首先说明android的主线程和工作线程. 主线程又称为UI线程.正是因为在android中,所有与UI有 ...

  3. maven Connection refused: connect

    现象: 本地可以访问错误提示中的地址.但使用maven无法下载jar包. 环境: 浏览器上网需要使用代理 解决方法: 设置成正常代理可以.具体方法可以下载一个代理工具.只要IE配置成能直接访问http ...

  4. HTML5地理位置概述和地理位置对象的详解

    一.地理位置 经度  :   南北极的连接线 纬度  :   东西连接的线   二.位置信息从何而来 IP地址 GPS全球定位系统 Wi-Fi无线网络 基站         三.地理位置对象(navi ...

  5. js里面获取三位不重复值

    <html><body> <script type="text/javascript"> var d = new Date();var sz = ...

  6. redis命令集合

    一.连接控制 QUIT 关闭连接 AUTH (仅限启用时)简单的密码验证 二.适合全体类型的命令 EXISTS key 判断一个键是否存在;存在返回 1;否则返回0;DEL key 删除某个key,或 ...

  7. Android Studio Gradle构建脚本

    Gradle是一种依赖管理工具,基于Groovy语言,面向Java应用为主,它抛弃了基于XML的各种繁琐配置,取而代之的是一种基于Groovy的内部领域特定(DSL)语言. 构建工具就是对你的项目进行 ...

  8. robotframework笔记6

    测试文件结构 *** Settings *** Library OperatingSystem Library BuiltIn Resource ressources.py *** Variables ...

  9. python实现微信打飞机游戏

    环境:Ubuntu 16.04 LTS Python 2.7.11 +  Pygame + Pycharm 代码: # -*- coding: UTF-8 -*- import pygame, ran ...

  10. 也谈谈 Redis 和 Memcached 的区别

    本文作者: 伯乐在线 - 朱小厮 . 说到redis就会联想到memcached,反之亦然.了解过两者的同学有那么个大致的印象: redis与memcached相比,比仅支持简单的key-value数 ...