并发编程
文章平均质量分 54
本专栏记录Java并发编程实战
程序员阿皓
5年大厂全栈开发经验,擅长Java、大数据,精通分布式、微服务等前后端技术,有问题可以私信我。
展开
-
synchronized的JVM底层原理。
当 thread1 获取了 lock 对象的monitor对象锁时, thread2 尝试获取锁时会被阻塞,直到 thread1 释放锁后才能获取锁。当进入synchronized代码块时,会执行monitorenter指令来尝试获取对象的monitor对象锁;当退出synchronized代码块时,会执行monitorexit指令来释放对象的monitor对象锁。当一个线程获取了对象的monitor对象锁时,会在monitor对象上记录持有锁的线程,并将。其他线程尝试获取锁时,会进入。原创 2024-03-11 08:00:00 · 241 阅读 · 0 评论 -
一文总结所有的Java线程池的拒绝策略。
如上代码,当线程池队列已满时,会丢弃队列中等待时间最长的任务,所以只会有两个线程执行了提交的任务。在Java中,Java线程池的拒绝策略是用于处理线程池。Java并发包提供了四种内置的拒绝策略。执行该任务,即在调用线程中直接执行被拒绝的任务。的任务,然后尝试重新提交被拒绝的任务。被拒绝的任务,不做任何处理。原创 2024-03-15 08:00:00 · 327 阅读 · 0 评论 -
Java中创建线程的多种方式。
在Java中,创建线程的方式有多种,包括继承Thread类、实现Runnable接口、使用Executor框架、使用Callable和Future等。原创 2024-03-10 08:00:00 · 250 阅读 · 0 评论 -
Java常见的并发编程模式(Future模式、生产者-消费者模式、读写锁模式)
在Java开发中,我们经常会使用多线程提高程序的性能,那有哪些常用的并发编程模式呢?接下来这篇文章主要介绍3个在开发中经常使用的并发模式,分别是Future模式、生产者-消费者模式和读写锁模式。原创 2024-03-15 08:00:00 · 171 阅读 · 0 评论 -
一篇文章揭开Java并发包(java.util.concurrent)的神秘面纱。
说到Java并发包,有的小伙伴可能不是太清楚,但是说到Java多线程编程,大家都侃侃而谈,这可以玩Java语言的基本功呀。那Java并发包到底是什么呢?其实Java并发包并不神秘,就是JDK8提供的一系列方便多线程编程的一些类,提供了丰富的并发框架和工具,其中包括Executor框架、线程安全的集合、各种锁 、原子变量等。原创 2024-03-15 08:00:00 · 230 阅读 · 0 评论 -
Java原子操作类。
原子操作类是Java中用于实现原子操作的类,它们提供了一种线程安全的方式来执行一系列操作,要么全部成功,要么全部失败,确保这些操作在多线程环境下不会被中断或交叉执行,从而避免数据竞争和并发问题。原创 2024-03-13 08:00:00 · 333 阅读 · 0 评论 -
Java常用并发容器。
在Java中, java.util.concurrent下并发容器的使用提供了线程安全的数据结构,能够在开发时更好地处理多线程编程中的。ConcurrentLinkedHashMap 是一个线程安全的哈希表实现,支持高并发的读写操作。ConcurrentLinkedQueue 是一个非阻塞的并发队列实现,适用于高并发场景。ConcurrentHashMap 是一个线程安全的哈希表实现,适用于高并发的读写操作。实现的Map,支持并发访问和高效的范围查找。实现的Set,支持并发访问和高效的范围查找。原创 2024-03-11 08:00:00 · 319 阅读 · 0 评论 -
Java常用的并发工具类。
在Java中,会经常使用到一些并发工具类来处理多线程问题,从而提高系统性能,本文总结一下在开发中常用的工具类。原创 2024-03-10 08:00:00 · 687 阅读 · 0 评论 -
Java线程池的概念、优势、常用参数和工作原理。
通过维护一定数量的核心线程,线程池可以在接收到任务时直接分配线程执行,避免频繁创建线程的性能损耗。最大线程数的设置应该考虑系统资源限制和负载情况,过高的最大线程数可能导致系统资源耗尽。线程池的参数对线程池的性能,可以使用这些参数对线程池进行整体调优,以提高线程池的工作效率,提供系统的响应性能。通过设置最大线程数和工作队列大小等参数,线程池可以限制同时执行的线程数量,防止。:最大线程数是线程池中允许的最大线程数量,当任务量超过核心线程数且。:核心线程数是线程池中保持活动的线程数,即使线程。原创 2024-03-14 08:00:00 · 556 阅读 · 0 评论 -
Java中常用的并发容器总结。
在Java中有很多常用的并发容器,使用它们可以保证多线程操作的安全性数据操作,下面介绍一下常见的并发容器,并结合代码详细说明一下它们的使用用法。原创 2024-03-14 08:00:00 · 212 阅读 · 0 评论 -
Java中synchronized关键字、ReentrantLock、volatile关键字是如何实现线程同步的。
在Java中,synchronized关键字、ReentrantLock和volatile关键字这三个是编程中常用于实现线程同步的机制,下面结合代码详细说明一下这三个关键字的用法。原创 2024-03-09 08:00:00 · 284 阅读 · 0 评论 -
Java内存模型(JMM)的原理及多线程下内存交互原则。
thread1 设置了flag为true,而thread2 会不断地检查flag是否为true,如果没有使用合适的同步机制,可能会出现内存可见性问题,thread2 可能永远无法看到thread1 设置的flag为true,导致程序陷入死循环。Java内存模型(Java Memory Model,JMM)是Java程序在多线程环境下的内存交互规则的规范,JMM定义了线程之间如何。这样就可以确保在一个线程修改了flag的值后,其他线程能够。,从而避免了内存可见性问题。原创 2024-03-14 08:00:00 · 159 阅读 · 0 评论 -
Java中是如何保证线程对共享变量的操作的原子性和有序性的。
Java提供了一些并发容器(如ConcurrentHashMap、ConcurrentLinkedQueue等),这些容器内部使用了一些锁或CAS(Compare and Swap)操作来保证对容器的操作是线程安全的。这意味着,volatile关键字可以保证在多线程环境下,对这个变量的操作不会乱序执行,而是按照代码的顺序进行。在 reader() 方法中,会检查 ready 的值,如果为true,则打印 number 的值。,从而保证了对共享变量的操作的原子性。来保证对共享变量的操作的原子性。原创 2024-03-13 08:00:00 · 635 阅读 · 0 评论 -
Java线程的生命周期、状态转换、线程调度。
Java线程的生命周期描述了一个线程从创建到终止的整个过程,包括不同状态之间的转换以及线程调度的机制。,线程调度可以通过设置线程的优先级、使用synchronized关键字等机制来影响。,操作系统负责将CPU时间片分配给不同线程,Java虚拟机负责根据。等待获取CPU时间片。来进行调度,也就是说。原创 2024-03-12 08:00:00 · 415 阅读 · 0 评论 -
Callable与线程池实现线程返回值。
以上代码创建了一个MyCallable类来实现Callable接口,还有一个ThreadPoolExecutitor,其固定池大小为3个线程,向执行器提交10个MyCallable任务,并将Future对象存储在列表中,并可以通过get()方法获取Future对象也就是call函数返回的结果。在Java中,Callable接口类似于Runnable,但它可以返回结果并抛出已检查的异常。可以将Callable与ThreadPoolExecutor一起使用来异步执行任务,并获取返回值。原创 2024-03-12 09:00:00 · 188 阅读 · 0 评论 -
Thread类的常用方法和生命周期。
Thread 类是Java中用于创建和操作线程的类。原创 2024-03-11 10:00:00 · 398 阅读 · 0 评论 -
并发编程——runnable、callable、future和futureTask详解。
在Java中,通过继承Thread,重写其run方法,还有就是实现Runnable接口是最常见的新建线程的两种方式,唯一不足的是这两种方式在执行完run方法之后无法得到返回值,为了优化这种情况,继而出现了Callable和Future,通过它们可以在执行完任务之后得到任务执行结果。用来获取执行结果,可以指定时间,如果还没获取到结果,就直接返回null,这个就比get()方法好些,可以避免了获取不到结果让当前调用线程一直阻塞。java内部类最全详解(成员内部类、局部内部类、匿名内部类、静态内部类)!原创 2024-03-11 08:00:00 · 1102 阅读 · 0 评论