当前位置: 首页 > wzjs >正文

郴州网站建设的公司上海地产网站建

郴州网站建设的公司,上海地产网站建,又一个wordpress站点怎么进,软件开发培训机构找极客时间理解池的概念​ 字符串常量池 String s1 "abc"; String s2"abc"; s1s2;​ 数据库连接池 Connection 每次链接创建,每次用完销毁 创建对象是要花费时间的Integer -128---127也有缓存池线程池的概念线程池是一种多线程处理形式&…

理解池的概念

​     字符串常量池    String s1 = "abc";   String  s2="abc";   s1==s2;

​     数据库连接池    Connection  每次链接创建,每次用完销毁     创建对象是要花费时间的

Integer -128---+127也有缓存池

线程池的概念

线程池是一种多线程处理形式,通过预先创建并管理一组线程,避免频繁创建和销毁线程的开销,提高系统性能和资源利用率。适用于需要处理大量短期任务的场景。

线程池的核心参数

  • corePoolSize:核心线程数,线程池长期维持的线程数量。
  • maximumPoolSize:最大线程数,任务队列满后允许创建的最大线程数。
  • keepAliveTime:非核心线程闲置时的存活时间。
  • workQueue:任务队列,用于保存待执行任务(如 ArrayBlockingQueueLinkedBlockingQueue)。
  • threadFactory:线程工厂,用于定制线程创建(如命名线程)。
  • RejectedExecutionHandler:拒绝策略,处理任务队列满时的后续任务(如直接丢弃或抛出异常)。

线程池的工作流程

  1. 提交任务时,若当前线程数小于 corePoolSize,立即创建新线程执行任务。
  2. 若线程数已达 corePoolSize,任务被放入工作队列。
  3. 若队列已满且线程数未达 maximumPoolSize,创建非核心线程执行任务。
  4. 若队列和线程数均达上限,触发拒绝策略。

线程池中的队列

线程池有以下工作队列:

ArrayBlockingQueue

LinkedBlockingQueue

线程池的拒绝策略

1.AbortPolicy 直接抛出异常

2.CallerRunsPolicy 拒绝后,由提交任务的线程执行此任务(如main线程)

3.DiscardOldestPolicy 丢弃队列中等待时间最长的那一个

4.DiscardPolicy 丢弃最后来的无法执行的任务

向线程池提交任务的两种方法

execute 与 submit 的区别

void execute 适用于不需要关注返回值的场景

submit 方法适用于需要关注返回值的场景。

关闭线程池

shutdownNow 立刻关闭,即使还有未执行完的任务

shutdown 等待所有任务执行完了再关闭

java中创建线程方式:

1.继承Thread类

2.实现Runnable接口

3.实现Callable接口

4.线程池

Java 提供的线程池实现

  • FixedThreadPool:固定线程数,队列无界。
    ExecutorService fixedPool = Executors.newFixedThreadPool(5);
    
    
  • CachedThreadPool:线程数无上限,空闲线程回收。
    ExecutorService cachedPool = Executors.newCachedThreadPool();
    
    
  • SingleThreadExecutor:单线程,确保任务顺序执行。
    ExecutorService singleThreadPool = Executors.newSingleThreadExecutor();
    
    
  • ScheduledThreadPool:支持定时或周期性任务。
    ScheduledExecutorService scheduledPool = Executors.newScheduledThreadPool(3);
    
    

自定义线程池示例

推荐使用 ThreadPoolExecutor 构造函数灵活配置参数:

ThreadPoolExecutor customPool = new ThreadPoolExecutor(2,                      // corePoolSize4,                      // maximumPoolSize60, TimeUnit.SECONDS,   // keepAliveTimenew ArrayBlockingQueue<>(100), // workQueuenew ThreadPoolExecutor.CallerRunsPolicy() // 拒绝策略
);

线程ThreadLocal

作用: 为每个线程提供一个变量副本

使用:

 //创建ThreadLocal对象,为每个线程自动的提供一个变量副本static ThreadLocal<Integer> threadLocal = new ThreadLocal<Integer>(){@Overrideprotected Integer initialValue() {return 1; //初始化变量}};public static void main(String[] args) {/*这种方式在两个线程中对num进行操作,这个num是同一个*///线程1new Thread(new Runnable() {@Overridepublic void run() {threadLocal.set(10);threadLocal.set(threadLocal.get()+5);System.out.println(Thread.currentThread().getName()+":"+threadLocal.get());}}).start();//线程2new Thread(new Runnable() {@Overridepublic void run() {threadLocal.set(20);threadLocal.set(threadLocal.get()+10);System.out.println(Thread.currentThread().getName()+":"+threadLocal.get());}}).start();}

池的关闭

  • shutdown():平滑关闭,不再接受新任务,等待已提交任务完成。
  • shutdownNow():强制关闭,尝试中断所有线程并返回未执行任务列表。

ThreadLocal 内存泄漏问题

内存溢出: 内存不够用了

内存泄漏: 一些对象已经不再使用,但是虚拟机又不能回收的对象( 例如: 数据库连接对象,IO流对象,Socket 提供close)

如果使用ThreadLocal不当,会造成内存泄漏问题。

对象与引用关系

Object obj = new Object(); 强引用

obj= null; 没有引用

软引用: 被SoftReference对象管理的引用, 内存充足时,不回收该对象,一旦内存不足时,

就会回收软引用管理的对象.

 Object o1 = new Object();
SoftReference<Object> softReference = new SoftReference<Object>(o1);

弱引用: 被WeakReference对象管理的引用, 只要进行垃圾回收,就会被回收掉

ThreadLocal被弱引用管理的, 下次垃圾回收到来时,ThreadLocal会被回收掉, 造成ThreadLocalMap中的不存在了,

但是value还被外界引用, 所以ThreadLocalMap就不能被回收, 造成了内存泄漏.

所以, 正确的使用ThreadLocal方式是在用完之后, 主动删除ThreadLocalMap中的数据.

注意事项

  • 避免使用无界队列(如 LinkedBlockingQueue 未指定容量),可能导致内存溢出。
  • 根据任务类型(CPU密集型或IO密集型)合理设置线程数。
  • 监控线程池状态(如通过 getActiveCount())。

文章转载自:

http://jzGOz3ne.gtdnq.cn
http://LP6bSHS4.gtdnq.cn
http://GuLPRVqR.gtdnq.cn
http://fQYpvpPc.gtdnq.cn
http://bof0TsP0.gtdnq.cn
http://cC6FH7ea.gtdnq.cn
http://kEKBqmSw.gtdnq.cn
http://8nbNQDMe.gtdnq.cn
http://n29ofMf0.gtdnq.cn
http://A0H2VyZg.gtdnq.cn
http://OUcPqEVw.gtdnq.cn
http://vfkKCbay.gtdnq.cn
http://YMTh6EI5.gtdnq.cn
http://DH0uHlyw.gtdnq.cn
http://AbswUFyr.gtdnq.cn
http://4iwLDz4x.gtdnq.cn
http://2fu4ku27.gtdnq.cn
http://KnTusRLL.gtdnq.cn
http://CoyM5iiJ.gtdnq.cn
http://caHok2Rl.gtdnq.cn
http://s5aSS2Rl.gtdnq.cn
http://EFVAXv1J.gtdnq.cn
http://SCMfBi9j.gtdnq.cn
http://xSkRtgb6.gtdnq.cn
http://XelWEODg.gtdnq.cn
http://Ayj3Sf1v.gtdnq.cn
http://FZDSvz9i.gtdnq.cn
http://34EMUg12.gtdnq.cn
http://NlvvYDOL.gtdnq.cn
http://dz1szW5i.gtdnq.cn
http://www.dtcms.com/wzjs/686814.html

相关文章:

  • 内容网站管理系统设计公司宣传文案
  • 简述网站开发的流程wordpress 调用编辑器
  • 网站的建设方法有哪些内容垂直型电商网站如何做
  • 沈阳网站建设咨询免费商城小程序
  • 哪些网站容易被百度收录建设企业银行官方网站
  • 博采网络淘宝seo是什么意思啊
  • 网上做兼职网站有哪些做新闻微网站有哪些
  • 网站流量提供商做网站充值犯法吗
  • 网站空间 控制面板.net做网站的吗
  • 网站制作公司 郑州推广普通话周是每年9月的第几周
  • 电子商务和网站建设方案天猫购买商城
  • 百度seo站长工具万户网络学校网站建设
  • 购物网站建设思路如何制作精美的ppt
  • 温岭公司做网站百度如何购买关键词
  • 凡科建站官网网站模板制定企业网站营销推广战略
  • 给别人做网站的话术怎样做门窗网站
  • 郑州做网站网站建设费用青岛主流网站
  • 网站建设对用户影响开个网址多少钱
  • 东莞网站建设电镀挂具免费的小程序商城
  • 网站托管外包大连网站建设选网龙
  • 能从源代码黑进网站修改数据吗以营销网建为
  • seo企业网站源码世界比赛排名
  • 编写网站策划方案旅游建设投资公司中网站
  • 鲜花店的网站建设手机怎么下载网页上的视频
  • 摄影网站设计方案360浏览器网页打不开是什么原因
  • 网站的ftp帐号做网站三网多少钱
  • 深圳高端品牌网站设计东莞专业网站推广多少钱
  • 苏州好的做网站的公司有哪些高端网站设计报价
  • 手机网站范例建设厅的证在哪里查询
  • 关键词歌词表达的意思番禺网站建设优化推广