多线程
文章平均质量分 79
执键行天涯
国企程序猿 5年工作经验
展开
-
【多线程】synchronized 原理、使用、注意事项详解
synchronized是Java的一个关键字。来自官方的解释:Synchronized方法支持一种简单的策略,用于防止线程干扰和内存一致性错误:如果一个对象对多个线程可见,则对该对象变量的所有读或写操作都通过Synchronized方法完成。Synchronized保证同一时刻有且只有一条线程在操作共享数据,其他线程必须等待该线程处理完数据后再对共享数据进行操作。原创 2024-07-25 16:12:20 · 641 阅读 · 0 评论 -
【lamda表达式】在多线程开发中的lamda表达书简化参数
很明显其中的 executor.execute()中传的参数还是Runnable类型,只不过这个类型参数中的run方法中只有一行调用handle()方法的代码,所以简化完之后就变成了 executor.execute(() -> handle());这个还需要多多使用,慢慢就熟练了。创建线程后传Runnable参数并实现run方法,可以采用下面两种方式,效果是一样的。对于线程池中提交任务代码,也可以这样简化:可以采用下面两种方式,效果是一样的。原创 2024-07-24 15:56:13 · 416 阅读 · 0 评论 -
【多线程】线程池提交的任务,被拒绝策略处理时,能不能获取到当时子任务的实例对象呢? 队列的处理,排队效果模拟
我通过匿名内部类的方式自定义了一个拒绝策略,并实现了其中的拒绝方法rejectedExecution(),而对于其中固定的参数,是否可以通过转换获取到真实的Runnable实现类的实例呢。接下来我们一起验证一下,同时也看下具体,线程池提交一些任务,哪个任务会进队列,哪个会被核心线程直接执行,哪个又会被拒绝。说明:因为每个子任务需要执行的业务逻辑没有,我通过sleep()来模拟实际业务花费的时间;为了看一下拒绝策略的拒绝效果是什么样的。原创 2024-07-18 09:56:25 · 514 阅读 · 0 评论 -
【多线程】线程池中的队列有哪些,应该如何选择
线程池中的队列是线程池的重要组成部分,用于存放待执行的任务。在Java中,线程池常用的队列类型包括无界队列、有界队列、直接提交队列(SynchronousQueue)、优先级队列等。原创 2024-07-17 10:37:21 · 624 阅读 · 0 评论 -
【多线程】线程池的最优参数设置,如何考虑?
(2)而CachedThreadPool允许的最大线程数量为Integer.MAX_VALUE,而且核心线程数为0,意味着 只要有任务进来,就会频繁创建新线程,没有任务之后又要关闭线程,耗费性能。另一方面,由于允许创建大量的线程,也有导致OOM的潜在隐患。为了最大程度利用线程池的资源,充分发挥线程池的执行效率,需要对线程池的主要参数进行合理的设置,对于不同的业务和场景,也需要根据实际情况来进行调整。如果线程池中的线程数小于核心线程数,新的任务将创建新线程来处理,即使有核心线程处于空闲状态。原创 2024-07-17 09:31:32 · 972 阅读 · 0 评论 -
【多线程】多线程之哪些内容需要考虑线程安全问题?
多线程原创 2024-07-16 14:33:59 · 862 阅读 · 0 评论