IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> Java实用教程笔记 Java多线程机制 -> 正文阅读

[Java知识库]Java实用教程笔记 Java多线程机制

泛型要考

泛型程序设计(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知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2021-12-15 18:08:21  更:2021-12-15 18:09:35 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 5:36:53-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码