首页 > 编程语言 >java 中的多线程问题

java 中的多线程问题

时间:2023-06-25 17:35:53浏览次数:37  
标签:java 变量 问题 threadLocal 线程 使用 必有 多线程

结论   

全局变量  多线程非安全   (堆)  static

局部变量  多线程安全   (栈)  fina 也可以安全

1:线程调用时 ,每一个线程都拥有一套完整的调用栈帧,栈帧中包含完整的调用方法名,方法的局部变量。而且栈是先入后出,调用方法时入栈,方法结束是出栈。

2:使用线程池时需要注意参数问题 :资料

  ThreadPoolTaskExecutor 创建线程池

   corePoolSize 最小核心线程数 (必有)

   maxPoolSize 最大线程数 (必有)

   keepAliveSeconds 空闲线程存活时间 (必有)

   queueCapacity   缓存队列数 (必有)

   allowCoreThreadTimeOut  存活线程数能否为0   (必有)

3:解决多线程安全问题在于如何解决 堆中变量的值共享问题,可以使用 private final 修饰成员变量,或者使用锁,或者使用threadLocal 变量

   threadLocal  原理是 维护了一个 threadLocal map,以threadLocal为key 存储线程变量的值。容易oop,因为使用线程池的时候线程结束并不会直接关闭,会在线程复用的时候读取到上一次未释放的值,所以线程结束时需要使用try finaly threadLocal.remove 释放 也可以使用AutoCloseable自动释放。

   加锁使用 方法锁和变量锁

   方法锁需要注意获取this锁的时机是否会导致其他线程无法获取锁以解锁导致cpu消耗100%。

标签:java,变量,问题,threadLocal,线程,使用,必有,多线程
From: https://www.cnblogs.com/mingkewang/p/17503435.html

相关文章

  • 转载 分库分表流量倾斜问题的排查与解决
    一、背景2022年11.10号晚8点,月黑风高各大电商公司正在等待着即将到来的大促...而作为交易订单组的我们也不例外,此时我们在紧盯监控大盘,试图找到系统蛛丝马迹的问题,以便及时应对,如果这时候出了问题,那就关乎着团队的面子,关乎着今年的绩效,当然还关乎着今年的年终奖……,秃然,奇怪的......
  • java tricky
    1、根据枚举的name获取枚举类:privatestaticSmsProviderTypefromName(StringspName){returnStream.of(SmsProviderType.values()).filter(sp->StringUtils.equals(sp.name(),spName)).findFirst().orElse(null);}2、字符串转成int(注意给默认值):NumberUtils.toInt3......
  • 当K8S发生故障时,可以从哪几个方面入手排查问题?
    当K8S发生故障时,往往需要迅速而精确地定位问题,并及时采取行动。那么,当遇到K8S故障时,应该从哪几个方面入手排查问题呢?本篇就来聊聊这个话题,让我们一起来探寻关键的排查方向。第一方面:审视集群状态K8S的集群状态是排查故障的关键起点。使用kubectlgetnodes命令来检查节点状态......
  • JAVA标签
    breakcontinue标签:```java标签(label)是在编程语言中用于标识代码的位置的符号。它通常与跳转语句(如break和continue)结合使用,用于控制程序的流程。在Java中,标签以标识符的形式出现,后面跟着一个冒号(:)。标签可以与循环语句(如for、while、do-while)和条件语句(如if、switch)一起......
  • java 中在图像上绘制文字
    privatevoidprintText(BufferedImageimage,floatx,floaty,Stringtext){Graphics2Dg=image.createGraphics();g.setColor(Color.RED);g.setFont(newFont("Arial",Font.BOLD,30));FontMetricsfm=g.getFontMet......
  • 关于Java中ArrayList类的toArray方法详解
    先上源码:publicObject[]toArray(){returnArrays.copyOf(elementData,size);}可以看到ArrayList类的toArray()方法调用了Arrays.copyOf(elementData,size)(其中的elementData是ArrayList类中用来存储对象的数组,size是数组大小),接下来进入其内部:publicsta......
  • 线上非业务问题排查
     常见的线上问题基本都是业务代码导致的问题,例如某个空指针或者是代码编写存在漏洞。这里记录一下网上看到的容器服务线程数飙升导致的问题  一、监控数据首先看下监控公司采用Prometheus监控,有较为完善的监控指标,因运维同学说的是线程数过多,那就只列出和线程相关的监控......
  • golang使用core dump分析定位程序崩溃问题
     原创 萧瑟 golang面试经典讲解 2023-06-2319:05 发表于上海收录于合集#go语言6个#go6个##go工具15个一、前言coredump是一个包含着意外终止的程序其内存快照的文件。这个文件可以被用来事后调试(debugging)以了解为什么会发生崩溃,同时了解其中涉及到的变量。通......
  • 【淘宝商品详情数据】api接口获得宝贝详情数据、优惠价格数据Java调用示例
    淘宝详情API接口的作用是获取淘宝平台上某个商品的详细信息,包括商品标题、价格、图片、规格、参数、店铺信息等。开发者可以通过该接口获取到商品的原始数据,方便进行数据分析、价格比较、爬取等操作。通过该接口获取到的商品详情数据可以结合其他数据进行深度挖掘,例如可以将商品数......
  • 前端封装excel下载方法&&解决前端下载请求设置responseType: 'blob'时后台报错无法处
    请求设置responseType:'blob'时接口报错了如果不做处理则获取不到接口错误信息,此时下载的文件是有问题的。/*@paramsoptions{}*data:Blob,*fileName:String,*successMsg:String,**/import{Message}from'element-ui'importdownloadExcelFilePublicHandler......