logo
publist
写文章

简介

该用户还未填写简介

擅长的技术栈

可提供的服务

暂无可提供的服务

Java EE初阶启程记08---多线程案例(1)

本文介绍了Java中两种重要的并发编程模式:单例模式和阻塞队列。单例模式通过饿汉式(类加载时创建实例)和懒汉式(首次使用时创建实例)实现,重点讲解了懒汉式的线程安全改进方案,包括双重检查锁定和volatile关键字的使用。阻塞队列部分阐述了其线程安全特性及生产者消费者模型的应用场景,展示了标准库中BlockingQueue的使用方法,并给出了一个基于循环队列的阻塞队列实现方案,通过synchron

文章图片
#javascript#前端#java +1
Java EE初阶启程记09---多线程案例(2)

本文介绍了Java中的定时器和线程池的实现原理。定时器通过优先级队列管理任务,worker线程不断扫描队列执行到期任务;线程池通过阻塞队列管理任务,维护固定数量的工作线程执行任务。还讨论了线程安全的思路(避免共享、只读共享或保证原子性/顺序性/可见性)以及线程相比进程的优势(创建开销小、切换成本低、资源占用少等)。最后对比了进程与线程在资源分配、通信方式等方面的核心区别。

文章图片
#java-ee#java#开发语言
Java EE初阶启程记10---常见的锁策略

本文主要介绍了常见的锁策略,包括乐观锁与悲观锁、重量级锁与轻量级锁、自旋锁、公平锁与非公平锁、可重入锁、读写锁等。作者通过生动的类比(如师生问答、追女神等)解释各类锁的特性与适用场景,并指出synchronized在不同情况下会动态调整锁策略。文章还分析了内核态与用户态对锁性能的影响,以及读写锁在"读多写少"场景的优势。最后通过面试题形式总结了关键知识点,如乐观锁的实现方式、自

文章图片
#java-ee#java
Java EE初阶启程记11---CAS

CAS(比较并交换)是一种无锁的原子操作,通过比较内存值与预期值来决定是否更新数据。它通过硬件指令实现原子性,广泛应用于原子类和自旋锁。但存在ABA问题,即值被多次修改后恢复原值,可能导致逻辑错误。解决方案是引入版本号机制,确保数据未被其他线程修改过。Java中的AtomicStampedReference类提供了版本管理功能来解决ABA问题。CAS是乐观锁的一种实现方式,适用于高并发场景。

文章图片
#java#开发语言#java-ee
Java EE初阶启程记12---synchronized 原理

摘要:synchronized锁在JDK1.8中具有多态特性,根据竞争情况动态调整锁策略。初始为乐观的轻量级锁(偏向锁),通过CAS实现自旋;竞争加剧时升级为悲观重量级锁(内核态mutex)。具备不公平、可重入特性,支持锁消除和粗化优化。其升级过程包含无锁、偏向锁、轻量级锁、重量级锁四个状态,通过延迟加锁和自适应自旋来平衡性能。JVM通过锁优化机制,即使开发者未显式优化,也能保证基本性能。典型应用

文章图片
#java-ee#java
Java EE初阶启程记02---认识线程

本文介绍了Java多线程编程的核心概念与应用。主要内容包括:1.线程概念及与进程的区别,强调线程共享内存空间、更轻量级的特点;2.两种创建线程的方法(继承Thread类和实现Runnable接口)及其代码实现;3.通过银行业务案例和性能测试对比,展示了多线程在提高程序运行效率方面的优势(测试显示并发比串行快约45%)。文章还指出Java线程是对操作系统线程的封装,并简要提及线程池和协程等高级并发技

文章图片
#java#开发语言#java-ee
Java EE初阶启程记03---Thread类及常见方法

摘要:Thread类是Java中用于管理线程的核心类,每个线程对应唯一的Thread对象。文章介绍了Thread的构造方法、常见属性(如ID、名称、状态等),以及线程的基本操作:start()启动线程、interrupt()中断线程(包括标志位和异常处理两种方式)、join()等待线程结束。此外还讲解了获取当前线程引用(currentThread)和线程休眠(sleep)的方法。这些内容涵盖了Ja

文章图片
#java-ee#java
Java EE初阶启程记05---线程安全

【摘要】本文探讨了多线程编程中的线程安全问题。通过一个共享变量count的自增案例,展示了多线程环境下可能出现的数据不一致现象。分析了线程不安全的四大原因:随机调度、共享数据修改、原子性缺失和可见性问题。其中重点解释了原子性概念,用"房间上锁"的比喻说明同步互斥机制,并指出n++操作实际包含三个非原子步骤。最后通过引入synchronized同步锁机制,解决了count自增的线

文章图片
#java-ee#java#开发语言
Java EE初阶启程记04---线程的状态

摘要:本文介绍了Java线程的六种状态(NEW、RUNNABLE、BLOCKED、WAITING、TIMED_WAITING、TERMINATED)及其转换过程。通过代码示例展示了线程状态转移的观察方法,重点分析了BLOCKED、WAITING和TIMED_WAITING状态的区别:BLOCKED是等待获取锁,WAITING和TIMED_WAITING是等待线程通知,后者带有超时机制。文章采用银行

文章图片
#java#jvm#开发语言 +1
Java EE初阶启程记06---synchronized关键字

摘要:synchronized是Java中的互斥锁机制,通过对象头中的锁标记实现线程同步。它具有互斥性(同一时刻仅一个线程持有锁)和可重入性(同一线程可重复获取锁)。使用时可以修饰代码块(指定锁对象)、普通方法(锁this)或静态方法(锁类对象)。Java标准库中部分类如Vector、StringBuffer使用synchronized实现线程安全,而ArrayList等则是非线程安全的。注意sy

文章图片
#java-ee#java
    共 24 条
  • 1
  • 2
  • 3
  • 请选择