news 2026/4/23 12:15:14

Java并发编程

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Java并发编程

线程运行原理

每个线程都有自己的栈空间,且互不干扰

只有当所有线程都运行结束,Java进程才会结束

线程的上下文切换

概念:当cpu不在执行当前线程的指令,而是去执行另一个线程的指令

  • 出现的原因
    1.CPU的时间片用光
    2.有更高优先级的线程需要执行
    3.垃圾回收
    4.线程自己调用wait,lock,sleep等(主动)

常见方法

  • sleep
    当前线程由Runnable状态转化为TIME_WAITING
    其他线程可以通过休眠线程的interrupt方法将其打断,打断后会抛出异常,又转化为RUNNABE状态

  • yield
    当前运行中的线程将时间片让给其他线程,其状态转化为runnable,但是如果没有其他处于runnable的线程,依旧不会将按时间片让出去

  • 优先级
    数字越大,优先级越高,抢到时间片的概率越大

  • join()
    线程等待调用这个方法的线程结束后,才继续往下执行

Threadt1=newThread("t1");t1.start();t1.join()//主线程运行到这里的时候,会等待t1线程运行结束后,才继续执行
  • join(long t)
    线程等待方法线程执行完,且最多等t毫秒

  • interrupt ()
    对处于阻塞状态的线程,会让他们抛出异常同时将打断标记重置为false ;对于运行中的线程,只是会将中断标记设置为true,依旧不会影响其正常运行,除非他调用isInterrupt方法,对他自定义做处理

  • isInterrupt()
    判断这个线程是否被打断,打断则返回true

  • interrupted()
    判断线程是否被打断,打断则返回true,且重置为false

  • park()
    线程运行到这里会停止,知道其他线程将其打断

守护线程

当非守护线程执行完成,即使守护线程还有代码没有执行完,也会强制结束

t.setDaemon(true)

线程状态

注意:只有处于Runnable状态的线程,才有资格抢时间片
1.NEW(新建状态,创建线程后但是没有start()线程)
2.Runnable(可运行状态,调用start后,nofity后)
3.BLOCKED(阻塞状态,到线程获取锁失败)
4.WAITING(等待状态,当调用wait()后)
5.TIME_WAITING(时间等待状态,当调用sleep())
6.TERMINATED(终止或销毁状态,当执行完任务后)

Synchronized

注意:Class对象锁和实例锁是两个不同的锁

  • 基础语法
synchronized(对象){临界区}

如果这个对象时静态变量,每个线程都是共享同一把锁,但是如果是局部变量,就相当于每个线程都有自己的锁,相互不影响

个人理解:没有拿到锁的线程,转化为BLOCK状态,且不会参与时间片的分配,这样拿到锁的线程即使时间片用光了,下一次依然还是分配给他,当锁被释放后,其他线程就从BLOCK状态转化为RUNABLE状态,且参与时间片的分配

  • 加在方法上
publicsynchronizedvoidfunc(){....}//等价于publicvoidfunc(){synchronized(this){.....}}
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/21 3:29:22

yfinance金融数据分析:3分钟上手实战到10倍效率进阶指南

yfinance金融数据分析:3分钟上手实战到10倍效率进阶指南 【免费下载链接】yfinance Download market data from Yahoo! Finances API 项目地址: https://gitcode.com/GitHub_Trending/yf/yfinance 在当今数据驱动的金融投资领域,yfinance作为Pyth…

作者头像 李华
网站建设 2026/4/23 11:12:35

PyTorch训练太烧钱?按需GPU方案让个人开发者用得起

PyTorch训练太烧钱?按需GPU方案让个人开发者用得起 你是不是也是一名独立游戏开发者,脑子里装满了创意,却在AI功能面前止步不前?想给游戏里的NPC加入智能对话、行为决策甚至个性化记忆,但一想到要自己从头训练一个PyT…

作者头像 李华
网站建设 2026/4/21 1:18:26

DeepSeek-R1-Distill-Qwen-1.5B体验报告:云端GPU真实使用感受

DeepSeek-R1-Distill-Qwen-1.5B体验报告:云端GPU真实使用感受 你是不是也在刷到“DeepSeek爆火”“国产大模型新王炸”这类消息时心动了,但又有点犹豫?毕竟现在各种AI模型宣传满天飞,有的说本地就能跑,有的说必须高端…

作者头像 李华
网站建设 2026/4/18 8:57:35

5个关键步骤:用CVAT实现团队标注任务的智能分配与实时监控

5个关键步骤:用CVAT实现团队标注任务的智能分配与实时监控 【免费下载链接】cvat Annotate better with CVAT, the industry-leading data engine for machine learning. Used and trusted by teams at any scale, for data of any scale. 项目地址: https://gitc…

作者头像 李华
网站建设 2026/4/16 12:31:03

还在纠结显卡?Qwen-Image-Layered云端体验1小时1块

还在纠结显卡?Qwen-Image-Layered云端体验1小时1块 你是不是也遇到过这样的情况:刚工作不久,手头项目越来越多,看到同事用AI工具三下五除二就把一张电商海报从草图做到上线,而你还在Photoshop里一层层抠图、调色、对齐…

作者头像 李华
网站建设 2026/4/21 7:57:38

微前端架构深度实践:重构企业级应用的技术革命

微前端架构深度实践:重构企业级应用的技术革命 【免费下载链接】vue-vben-admin vbenjs/vue-vben-admin: 是一个基于 Vue.js 和 Element UI 的后台管理系统,支持多种数据源和插件扩展。该项目提供了一个完整的后台管理系统,可以方便地实现数据…

作者头像 李华