前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >测试必备之Java知识(四)—— 线程相关

测试必备之Java知识(四)—— 线程相关

作者头像
小菠萝测试笔记
发布2020-06-09 14:34:42
3240
发布2020-06-09 14:34:42
举报
文章被收录于专栏:自动化、性能测试

线程相关

Java多线程实现方式

继承Thread,实现Runnable接口,实现Callable接口(能抛异常且有返回值,不常用)

为什么有了继承Thread方式还要有Runnable接口方式

实现接口的方式适合多个相同程序代码的线程去处理同一个资源,可以避免Java中单继承的限制

为什么JVM启动是多线程的?

因为至少启动了两个线程:主线程、垃圾回收线程

线程和进程的含义

进程:是操作系统资源分配的基本单位,正在运行的程序

线程:是任务调度和执行的基本单位,程序使用CPU的最基本单位

多线程和多进程的含义

多进程:操作系统能同时运行多个任务即程序

多线程:同一程序中有多个顺序流在执行

并发和并行的含义

并行:逻辑上同时发生,一段时间内同时运行多个程序

并发:物理上同时发生,一个时间点同时运行多个程序

线程和进程的区别

不同点

进程

线程

一个进程里有多个线程

内存

不共享内存

共享内存

资源

进程间共享文件网络资源

线程间不共享

开销

进程需要分配内存,开销较大

线程只需要分配栈和一个PC,开销较小

独立

可以独立存在

可以独立,必须依赖进程而存在

作用

进程是CPU资源分配的最小单位

线程是CPU调度的最小单位

通信

进程间的通信比较复杂因为它的数据空间独立性,需要通过操作系统,基于socket的进程间的通信机制

而线程间的通信由于多线程共享地址空间和数据空间,可直接通信,不必通过操作系统(内核的调度)

线程调度模型

分时调度模型:所有线程轮流使用CPU的使用权,平均分配每个线程占用CPU的时间片

抢占式调度模型:优先让优先级高的线程使用CPU,获得CPU时间片也越多,Java使用此模型

线程间通信——生产者消费者模式

生产者:先看是否有数据,有就等待消费者消费(wait),没有就生产,生产完后通知消费者消费

消费者:先看是否有数据,有就消费,没有就等待生产者生产,通知生产者生产数据(notify)

Java线程调度方式

线程睡眠:Thread.sleep(long millis),使线程转换到阻塞状态,当睡眠结束后,就转为就绪状态

线程等待:Object.wait(),导致当前的线程等待,直到其他线程调用此对象的notify()或notifyAll()

线程唤醒:Object.notify()方法,唤醒在此对象上等待的单个线程。

线程让步:Thread.yield(),暂停当前正在执行的线程对象,把执行机会让给相同或更高优先级的线程

线程加入:join(),等待其他线程终止

线程状态

初始状态:创建一个线程

就绪状态:线程调用start()方法

运行状态:线程被CPU调度

阻塞状态:放弃CPU使用权,暂停完毕后变回就绪状态(同步阻塞,等待阻塞,其他阻塞)

死亡状态:线程执行完或因异常退出了run()方法,线程结束了生命周期

线程状态转换

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-01-01 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 线程相关
    • Java多线程实现方式
      • 为什么有了继承Thread方式还要有Runnable接口方式
        • 为什么JVM启动是多线程的?
          • 线程和进程的含义
            • 多线程和多进程的含义
              • 并发和并行的含义
                • 线程和进程的区别
                  • 线程调度模型
                    • 线程间通信——生产者消费者模式
                      • Java线程调度方式
                        • 线程状态
                          • 线程状态转换
                          领券
                          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档