
高并发
文章平均质量分 63
锁、线程池
Marciaguoguo
这个作者很懒,什么都没留下…
展开
-
线程相关sleep和wait方法
wait()是让获得对象锁的线程等待,会自动释放当前线程占用的对象锁。每个Object对象都有对象锁,既然要释放当前线程占有的对象锁并让其进入WAITING状态,自然要操作对应的对象而不是当前的线程。sleep()是让当前线程暂停执行,不涉及对象类,也不需要获取对象锁。原创 2024-04-02 16:56:21 · 420 阅读 · 0 评论 -
volatile和synchronized关键字
可以保证变量的可见性,但不能保证原子性。将变量声明为volatile,表示在JVM中这个变量是共享且不稳定的,每次使用都要去主存中进行读取。原创 2024-03-14 14:22:15 · 350 阅读 · 0 评论 -
Java线程的6种状态
线程在生命周期中并不是固定处于某一个状态而是随着代码的执行在不同状态之间切换。原创 2024-03-11 16:25:08 · 435 阅读 · 0 评论 -
ThreadPoolExecutor创建线程池
当我们不指定 RejectedExecutionHandler 饱和策略的话来配置线程池的时候默认使用的是 ThreadPoolExecutor.AbortPolicy。在默认情况下,ThreadPoolExecutor 将抛出 RejectedExecutionException 来拒绝新来的任务 ,这代表你将丢失对这个任务的处理。当最大池被填满时,此策略为我们提供可伸缩队列。当前同时运行的线程数量达到最大线程数,并且队列已经被放满任务时,触发拒绝策略。原创 2024-01-29 16:09:07 · 676 阅读 · 0 评论 -
什么是线程死锁,如何避免死锁
多个线程同时被阻塞,它们中的一个或全部都在等待某个资源被释放,由于线程无限期的被阻塞,因此程序不可能被终止。原创 2024-01-10 14:45:41 · 430 阅读 · 0 评论 -
Java多线程的实现方式及原理
构造函数的方式,这样的处理方式让写的同学更加明确线程池的运行规则,规避资源耗尽的风险。FutureTask使用,实现有返回结果的非阻塞执行方法。《阿里巴巴 Java 开发手册》强制线程池不允许使用。可根据实际情况调整线程数量的线程池。延迟后运行任务或者定期执行任务。我们可以创建多种类型的。线程池创建的两种方式。只有一个线程的线程池。原创 2024-01-10 11:40:10 · 524 阅读 · 0 评论