java 共享模型的管理

news/2025/3/25 2:02:18/文章来源:https://www.cnblogs.com/xiaoxianglu/p/18787823

共享模型的管理:

  • 线程的阻塞,所以就有了cpu的时间片,尽可能的利用cpu:

    • sleep:有时间限制的休息;
    • wait:无时间的休息;
    • io读写的阻塞;
  • 临界区:Critical Section

    • 多个线程的访问共享资源【主内存】的问题【并发问题】
      • 多个线程对共享资源读写操作时发生了指令交错,所引发的原子性问题;
      • 一段代码块如果存在对共享资源的多线程读写操作,则称这段代码为临界区
  • 竞态条件:Race Condition

    • 多线程在临界区内执行,由于代码执行序列不同而导致结果无法预测,则称之为竞态条件
  • 多并发的上下文切换问题,解决方案:

    • 阻塞式的:synchronized【对象锁,采用互斥的方式】,Lock

    • 非阻塞式的:原子变量;

    • 互斥和同步都可以采取:synchronized:

      • 互斥:是保证临界区的竞态条件下,同一时刻只能有一个线程执行该代码;

      • 同步:是由于线程执行的先后顺序不一致,需要一个线程等待其他线程运行到某个点;

        //必须得保证是同意把锁;
        synchronized(对象锁) {//临界区
        }
        
      • 当线程来了后,发现临界区被锁上了,就会进行上下文切换陷入阻塞状态;

      • 当线程结束后,会唤醒其余阻塞线程,又cpu的时间片决定给谁锁;

        synchronized利用对象锁,保证的临界区的原子性;

      • 方法上的synchronized

        • 普通方法:锁住的是this;
        • 静态方法:锁住的是类.class【Class对像】;
  • 变量【主内存】的线程安全:

    • 当不存在共享时,当只有读操作时,当仅为局部变量时,变量安全;
    • 当存在读写操作时【临界区代码】,变量不安全;
    • 线程中创建的对象,都会在堆中,当把这个对象引用暴露在其他线程的时候,那么其他线程也就能访问了【不安全】;
      • private,finall的修饰符在一定程度上,保护了局部变量的安全性,使得继承子类,无法操作数据【开闭原则的闭】;
  • 常见线程安全类:

    • String【内部属性不可变】, Integer, StringBuffer, Vector, HashTable, java.util.conrrent【JUC】下的包;
    • 单个方法具有原子性;
    • 多个方法的组合不具有原子性;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/904201.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一款 .NET 开源、功能强大的远程连接管理工具,支持 RDP、VNC、SSH 等多种主流协议!

前言 今天大姚给大家分享一款基于 .NET 开源(GPL-2.0 license)、免费、功能强大的 Windows 远程连接管理工具,支持 RDP、VNC、SSH 等多种主流协议:mRemoteNG。 项目介绍 mRemoteNG是一款基于 .NET 开源(GPL-2.0 license)、免费、功能强大的 Windows 远程连接管理工具,支…

探秘Transformer系列之(17)--- RoPE

从零开始解析Transformer,目标是:(1) 解析Transformer如何运作,以及为何如此运作,让新同学可以入门;(2) 力争融入一些比较新的或者有特色的论文或者理念,让老鸟也可以有所收获。探秘Transformer系列之(17)--- RoPE 目录探秘Transformer系列之(17)--- RoPE文章总表0x0…

《AI未来进行式》(DeepSeek、宇树科技、人形机器人、AI面试官本书全部预言。第18届文津提名奖,樊登、俞敏洪、刘慈欣等推荐) | PDF免费下载

《AI未来进行式》深入探讨人工智能的最新进展与未来趋势,涵盖 DeepSeek、宇树科技、人形机器人、AI 面试官等前沿话题。通过翔实案例与专业分析,预测 AI 如何重塑社会、产业与人类生活。荣获第18届文津图书奖提名,获樊登、俞敏洪、刘慈欣等推荐,适合对 AI 未来充满好奇的读…

python第三章课后程序练习题

重量计算 earth_weight = eval(input("请输入你当前的体重(kg)😊) moon_weight = earth_weight * 0.165 for year in range(1, 11): earth_weight += 0.5 moon_weight = earth_weight * 0.165 print(f"Year {year}: Earth weight = {earth_weight}kg, Moon weight …

逆序对的数量 与 归并排序

题目描述 给定一个长度为 n 的整数数列,请你计算数列中的逆序对的数量。 逆序对的定义如下:对于数列的第 i 个和第 j 个元素,如果满足i<j且 a[i]>a[j],则其为一个逆序对;否则不是。 输入格式 第一行包含整数 n,表示数列的长度。 第二行包含 n 个整数,表示整个数列…

我最常用的 Visual Studio 2022 扩展插件推荐:生产力必备工具

Visual Studio 2022作为微软推出的一款功能强大的IDE,业界称之为“宇宙第一IDE”。它以出色的性能、丰富的内置功能和对多种编程语言的支持,深受开发者喜爱。然而,随着项目复杂度的增加和开发需求的多样化,仅依靠IDE的内置功能往往不足以满足所有场景。这时,扩展插件成为了…

25年可以免费使用的云服务器

免费服务器:调试程序与建站的好帮手网站链接为:https://www.sanfengyun.com/ 在数字化时代,无论是个人开发者、大学生还是时间充裕的技术爱好者,拥有一台稳定的服务器来调试程序和搭建网站都是至关重要的。而正是这样一个为广大用户提供了极大便利的平台,它以其免费的云服…

Code Runner MCP Server,来了!

大家好!我是韩老师。如果作为程序员的你,还不了解 MCP (Model Context Protocol) 的话,那韩老师劝你赶紧去补补课吧!本文不对 MCP 进行详细介绍~ 简单来说,MCP is another LSP in AI World! 也许有一天,AI 程序员不懂 MCP,就犹如前端程序员不懂 JavaScript!大家都知道韩…

Ollama初识

初识ollama,学习基本功能和记录参数前言 最近由于 deepseek 的火爆,AI 大语言模型又一次被抬了出来,对此早有关注的我决定尝试本地化部署使用体验一下,并且搭建一个本地的 AI 助手。 根据我之前了解到的信息,在使用大模型,现在较为方便的方法一般是先搭建一个大模型的管理…

Pass-15

function isImage($filename){//需要开启php_exif模块$image_type = exif_imagetype($filename);switch ($image_type) {case IMAGETYPE_GIF:return "gif";break;case IMAGETYPE_JPEG:return "jpg";break;case IMAGETYPE_PNG:return "png";break…

Pass-16

$is_upload = false; $msg = null; if (isset($_POST[submit])){// 获得上传文件的基本信息,文件名,类型,大小,临时文件路径$filename = $_FILES[upload_file][name];$filetype = $_FILES[upload_file][type];$tmpname = $_FILES[upload_file][tmp_name];$target_path=UPLO…