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知识库]线程实现方式

1.进程

  • 硬盘:存储应用程序及其数据,永久存储ROM。
  • 内存:所有应用程序都需要进入到内存中运行,临时存储RAM。
  • 点击应用程序的执行,应用程序就会进入到内存中,占用一些内存执行。
  • 进入到内存中运行的程序就叫进程。
  • 进程清除:任务管理器->结束进程,就把应用程序从内存中清除了。
  • 每个进程都有一个独立的内存空间。
  • 一个应用程序可以同时运行多个进程,每个进程都是应用程序的一次运行过程,是系统运行程序的基本单位。
  • 系统运行程序的过程就是进程创建、运行、消亡的过程。

2.线程

  • 线程是进程的一个执行单元,负责当前进程中程序的执行。
  • 一个进程至少有一个线程,有多个线程的应用程序称之为多线程程序。
  • 点击应用程序的一个功能执行,就会开启从应用程序到中央处理器的一条执行路径,CPU可以通过这条路径执行功能,这条路径就叫线程。
  • 单核心单线程CPU会在多个线程之间做高速切换,轮流执行n个线程,效率低,切换速度是1/n毫秒。
  • 4核心8线程CPU有8个线程,可以同时执行8个线程,8个线程在多个任务之间高速切换,速度是单线程CPU的8倍,每个任务被执行到的几率提高了8倍。
  • 多线程好处:1.效率高,2.线程之间互不影响。

3.线程调度

  • 分时调度:所有线程轮流获取CPU的使用权,平均分配每个线程占用的CPU时间。
  • 抢占式调度:优先让优先级高的线程使用CPU,占用的CPU时间越长,执行几率越大Java使用的是抢占式调度,哪个线程优先级高哪个线程优先执行,同一个优先级,随机选择一个线程执行

4.主线程

  • 执行main方法的线程就是main(主)线程。
  • JVM执行main方法,main方法进入栈内存,JVM找操作系统开辟一条main方法通向内存的执行路径——线程。
  • 单线程程序:程序中只有一个线程。
  • Java程序从main方法开始,从上至下依次执行。
  • 单线程程序的不足:一旦出现了异常,异常后边的方法就不能执行。

5.创建线程

  • 方法一:1.将类声明为Thread类的子类,2.重写Thread类的run方法,设置线程任务,即开启线程要做什么,3.创建Thread类的子类对象,4.调用Thread类的start方法开启新的线程,Java虚拟机调用该线程的run方法。
  • 注意:1.Thread类是描述线程的类,在java.lang包下。2.多次启动同一个线程是非法的,会报错,特别是当线程已经结束执行后,不能再重新启动。3.创建一个新线程的结果是两个线程并发执行,一个是主线程,一个是新创建的线程,对于CPU而言,有两条执行路径,CPU有选择的权利,它想执行谁就执行谁,我们控制不了它,两个线程一起抢夺CPU的执行时间,谁抢到谁执行对应的代码。4.直接执行新线程的run方法和执行新线程的start方法的区别如下:run方法直接在当前栈中执行,而start方法开辟新的栈空间,执行run方法。5.多线程的好处:多个线程之间互不影响,在不同的栈空间中执行。

  • 方法二:实现Runable接口。1.创建一个Runable接口的实现类,2.在实现类中重写Runable的run方法,设置线程任务,3.创建一个Runable接口的实现类对象,4.创建一个新的Thread对象,构造方法中传递Runable接口的实现类对象,5.调用Thread类中的start方法,开启新的线程,执行run方法。

?6.Thread类方法

  • String getName():获取线程名称。不设置线程名称一般是main,thread-0,thread-1,thread-2。
  • void setName(String name):设置线程名称。给线程设置名称的方法1:使用Thread类的setName方法;方法2.将传递线程名称作为参数,创建带参构造方法,子类构造方法调用父类带参构造方法,将线程名称传递给父类,由父类给子类线程创建一个名称。
  • void sleep(long millis):使当前正在执行的线程以指定的毫秒数暂停(暂时停止执行),毫秒数结束之后,线程继续执行。

7.Thread和Runable创建新线程的区别

  • 使用Runable接口创建线程的优点:1.避免了单继承的局限性,2.增强了程序的可扩展性,即降低了设置线程任务和开启新线程的耦合性(解耦)。
  • 尽量使用Runable的方法。

8.匿名内部类实现多线程

  • 匿名内部类:写在其他类内部的没有名字的类。
  • 把子类集成父类,重写父类方法,创建子类对象合成一步完成;把实现类实现接口,重写接口中的方法,创建实现类对象合成一步完成。
  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-01-03 15:56:35  更:2022-01-03 15:59:06 
 
开发: 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 8:38:27-

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