Java多线程机制

    • 泛型要考,后来又说不考了
    • 多线程不考
    • 12.1 进程与线程Process and Thread
    • 12.2Java中的线程Threads in Java
      • 线程的状态与生命周期The state and life cycle of threads
      • 线程调度与优先级Thread scheduling and priority
    • 12.3 线程类与线程的创建Thread classes and thread creation
      • Thread类构造方法
      • 目标对象与线程的关系
    • 12.4 线程的常用方法
      • 句柄handle
    • 12.5线程同步Thread Synchronization
      • Synchronized关键字
    • 12.6 协调同步的线程Coordinate synchronized threads
    • 12.7线程联合The thread joint
    • 12.8GUI线程GUI thread
    • 12.9计数器线程Timer thread
    • 12.10守护线程Daemon thread
  • Summarization
  • References
  • Edition 2021/12/14

泛型要考,后来又说不考了

泛型程序设计(generic programming)是程序设计语言的一种风格或范式。泛型允许程序员在强类型程序设计语言中编写代码时使用一些以后才指定的类型,在实例化时作为参数指明这些类型。各种程序设计语言和其编译器、运行环境对泛型的支持均不一样。Ada、Delphi、Eiffel、Java、C#、F#、Swift 和 Visual Basic .NET 称之为泛型(generics);ML、Scala 和 Haskell 称之为参数多态(parametric polymorphism);C++ 和 D称之为模板。具有广泛影响的1994年版的《Design Patterns》一书称之为参数化类型(parameterized type)。

多线程不考

12.1 进程与线程Process and Thread

一个进程最少由一个线程组成。
A process consists of at least one thread.
线程是微量级的进程。
Threads are microprocesses.
text记事本打开百万字文件会卡死(记事本进程只有一个线程,单线程程序)
word打开百万字文件非常快(一部分一部分地读,直到全部读尽为止)

12.2Java中的线程Threads in Java

Java虚拟机JVM就是一个操作系统:宏观并行,微观串行。
The Java Virtual Machine JVM is an operating system:Macro parallelism, micro serialization.
每个Java应用程序都有一个缺省的主线程。
Every Java application has a default main thread.
JVM在主线与其他线程中轮流切换,保证每个线程都有机会使用CPU资源(以下简称资源)。
The JVM alternates between the main thread and other threads, ensuring that each thread has an opportunity to use CPU resources.

线程的状态与生命周期The state and life cycle of threads

新建、运行、中断、死亡
运行:start()方法 run()方法
中断:

  1. 中断状态Interrupt status
  2. sleep()方法
  3. wait()方法
  4. 阻塞状态Blocked status

占用资源->运行
不占用资源->休眠

线程调度与优先级Thread scheduling and priority

实时、高、中(优先级设置过高会让其他程序执行受影响)
Setting the priority too high will affect other program execution.

12.3 线程类与线程的创建Thread classes and thread creation

编写Thread类的子类时,必须重写父类的run()方法
When you subclass Thread, you must override the run() method of the parent class.
类比监听器listener中必须实现的actionPerform()

Thread类构造方法

Thread(Runnable taget)
Runnable接口比使用Thread的子类更具有灵活性。
接口可以有多个,但继承的类只能有一个
There can be more than one interface, but only one inherited class.
sleep()方法可能抛出异常,用try-catch语句包裹

多线程比较危险?

目标对象与线程的关系

目标对象和线程

  1. 完全解耦 创建的目标对象不包含对线程对象的引用
  2. 组合(弱耦合) 目标对象将线程对象作为自己的成员

12.4 线程的常用方法

start()
run()
sleep(int millsecond) 注意这里是毫秒millisecond 该格式下为millsecond
isAlive()

句柄handle

某个线程对象的引用

12.5线程同步Thread Synchronization

线程同步机制:当一个线程A使用synchronized方法时,其他对象想使用这个synchrnized方法时就必须等待,直到线程A使用完该synchronized方法。

Synchronized关键字

synchronized关键字不能继承;
在定义接口与方法时不能使用synchronized关键字修饰;
构造方法不能使用synchronized关键字
synchronized关键字不能用来同步类变量

12.6 协调同步的线程Coordinate synchronized threads

wait()
中断线程的执行,使本线程等待,暂时让出CPU的使用权,并允许其他线程使用这个同步方法。
notify()
等待队列中第一个线程被唤醒
notifyAll()
遵循“先中断先连续”原则

12.7线程联合The thread joint

12.8GUI线程GUI thread

12.9计数器线程Timer thread

12.10守护线程Daemon thread

Summarization


References

https://baike.baidu.com/item/%E6%B3%9B%E5%9E%8B/4475207?fr=aladdin

Edition 2021/12/14

Java实用教程笔记 Java多线程机制相关推荐

  1. Java实用教程笔记 Java入门

    Java入门 JDBC Java数据库连接,(Java Database Connectivity,简称JDBC)是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询和更新 ...

  2. Java实用教程笔记 常用实用类

    常用实用类 8.1 String类 判断引用是否为同一变量 常量池vs非常量池(动态区) equals 输出对象为内存地址的方式 "==" 运算结果为ture/false的比较方式 ...

  3. Java实用教程笔记 子类与继承2

    子类与继承2 Review 继承方式比较 继承后子类对父类的访问权限说明 super关键字作用(2个) 构造函数的调用顺序 没有参数的构造函数即为默认构造函数 Lecture notes final关 ...

  4. Java实用教程笔记 子类与继承

    子类与继承 Unity 游戏仿真 C#与Java语法差不多 java.lang.Object Object是所有类的祖先类/始祖类 任何一个类最终都能转化为Object类的对象 Java库中的类是基础 ...

  5. Java实用教程笔记 类与对象

    类与对象 Abstract Body instanceof 文件后缀名 .py .c .cpp .java 成员函数/成员方法/行为 interface接口 可类比C++中抽象类 IDEA快捷键操作 ...

  6. Java实用教程笔记 组件及事件处理

    组件及事件处理 JFrame()常用方法 其中至少要掌握的 拓展 示例 AWT Swing SWT AWT 抽象窗口工具包 AWT(Abstract Window Toolkit),中文译为抽象窗口工 ...

  7. Java实用教程笔记 输入、输出流

    输入.输出流 期末考试会从10.1考到10.5 源&目的地 10.1File类 创建一个File对象的构造方法 文件属性 目录 创建目录 列出目录中的文件 FilenameFilter接口 辨 ...

  8. Java实用教程笔记 泛型与集合框架

    泛型与集合框架 Generics 链表 LinkedList < E >泛型类 接口回调 常用方法 LinkedList< E >泛型类实现Link< E >泛型接 ...

  9. Java实用教程笔记 接口与实现

    接口与实现 6.1接口(中间人) 接口方法全为public abstract 接口中没有构造函数,方法可以抛出异常 接口没有任何函数逻辑(对外开放) 接口可继承 接口.类(内部类.匿名类)都会生成cl ...

最新文章

  1. 云原生数据仓库TPC-H第一背后的Laser引擎大揭秘
  2. ASPxGridView数据汇总收藏
  3. [学习笔记] Cordova+AmazeUI+React 做个通讯录 - 联系人列表(2)
  4. 基于Ubuntu的ESP32平台搭建
  5. Python爬取房天下二手房信息
  6. ENSP下载还有其他资料地址
  7. fir302c虚拟服务器,斐讯 FIR302C 无线路由器WDS无线桥接设置
  8. Win10找不到飞行模式开关怎么办?
  9. 深度学习,提高分类精度
  10. Linux上wifi找不到网络的解决
  11. 公网远程访问内网群晖NAS 7.X版 【内网穿透】
  12. 为什么HATEOAS?
  13. YOLOX升级 | 阿里巴巴提出YOLOX-PAI,1ms内精度无敌!
  14. 关于盒子模型之 水平居中和垂直居中的问题
  15. IPU Saved Model Tool -- User Guide
  16. YAHOO 35条前端优化建议
  17. SpringBoot从入门到放弃之日志配置
  18. 毕业设计 单片机风速测量系统 - 物联网 嵌入式 stm32 arduino
  19. 你的Qt按钮可以加载Gif圆形的头像吗?
  20. 清华大学c语言程序设计第4版,清华大学出版社-图书详情-《C语言程序设计(第4版)学习辅导》...

热门文章

  1. 虚拟话安全:4个基本点
  2. 大恶人吉日嘎拉之走火入魔闭门造车之.NET疯狂架构经验分享系列之(一)后台控制逻辑代码部分...
  3. 一致性hash算法_分布式寻址算法
  4. @service注解_Spring 中 @Component、@Service 等注解如何被解析的
  5. mysql online ddl和pt_MySQL的onlineDDL及pt-osc
  6. 面试题:问题:Java中,char型变量中能不能存储一个中文汉字,为什么?
  7. 单片机节日彩灯实训报告_单片机课程设计(节日彩灯控制)
  8. zookeeper 客户端_zookeeper进阶-客户端源码详解
  9. java 取得textfield_怎样获取java中textfield的内容
  10. 宣传推广费用_企业如何做好网络推广,提高网络推广的转化率?