- 博客(6)
- 收藏
- 关注
原创 线程池总结
核心线程数,线程池中保持的最小线程数量:最大线程数,线程池中允许的最大线程数量:空闲线程存活时间,当线程数超过核心线程数时,多余的空闲线程在终止前等待新任务的最长时间:keepAliveTime的时间单位:工作队列,用于保存等待执行的任务的阻塞队列:线程工厂,用于创建新线程:拒绝策略,当线程池和工作队列都满了时的处理策略。
2025-04-26 16:44:54
289
原创 单例模式的写法(保证线程安全)
必须使用volatile防止指令重排序。可能造成资源浪费(如果实例未被使用)Java 5+版本才能完全保证安全。第一次访问需要同步,之后不需要。天然防止反射和序列化破坏单例。枚举实例在类加载时创建。类加载时就初始化实例。最简单安全的实现方式。由JVM保证线程安全。
2025-04-20 17:38:54
360
原创 Java 线程的几种状态总结
从BLOCKED/WAITING/TIMED_WAITING状态:获得锁/被通知/超时。| ↓ (获取锁成功) | |TIMED_WAITING → (超时/唤醒) ----------┘。| ↓ (获取锁失败) |从RUNNABLE状态:尝试获取已被其他线程持有的锁。转为RUNNABLE状态:超时时间到或被唤醒。转为RUNNABLE状态:被其他线程调用。转为RUNNABLE状态:成功获取到锁。↓ (run()结束)
2025-04-20 16:50:42
382
原创 Thread 类的基本用法总结
/ 获取线程优先级。// 方式2:在阻塞方法中处理InterruptedException。// 等待thread执行完毕。// 线程执行的代码。// 线程执行的代码。// 被中断,清理资源后返回。// 线程执行的代码。// 方式1:检查中断标志。
2025-04-20 16:45:50
285
原创 进程和线程的区别和联系
线程间通信更高效,但一个线程崩溃可能导致整个进程崩溃。线程共享进程的全局变量、堆内存、文件描述符等资源。多线程在单核CPU上是并发,多核CPU上可并行。进程间相互独立,一个进程崩溃不会影响其他进程。线程间可直接访问共享内存(需同步控制)共享进程的资源(内存、文件描述符等)多进程可实现真正的并行(多核CPU)拥有独立的地址空间、内存、数据栈等。每个线程有独立的栈空间和寄存器状态。需要高度稳定性和隔离性的任务。一个进程可以包含多个线程。进程间通过IPC机制通信。任务间需要高效共享数据。线程是进程的执行单元。
2025-04-20 16:05:32
326
原创 线程安全问题的原因和解决方案
优先使用java.util.concurrent中的高级工具。:至少两个线程同时访问同一共享变量,且至少有一个是写操作。使用wait/notify或Condition。:多个线程互相持有对方需要的资源而无限等待。:线程对共享变量的修改对其他线程不可见。:线程不断重试失败的操作,无法继续执行。:多个线程以不一致的顺序访问共享数据。:多个线程同时访问和修改共享数据。:一个操作被拆分为多个步骤执行。:某些线程长时间得不到执行机会。// 适用于状态标志等简单场景。:使用线程封闭或不可变对象。
2025-04-20 16:01:53
902
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人