
多线程
文章平均质量分 75
夏子曦
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
java——AQS(AbstractQueuedSynchronizer)
AQS(AbstractQueuedSynchronizer)是Java并发包(java.util.concurrent)中的一个核心组件,是构建锁和其他同步器的基础框架。原创 2024-12-21 14:15:14 · 2284 阅读 · 0 评论 -
java——Synchronized与Lock
是Java语言内置的同步机制。基于监视器锁(monitor lock)或对象锁实现。当线程进入一个synchronized方法或代码块时,它会自动获得锁,并在退出时自动释放锁。Lock是Java 5中引入的一个接口,提供了比synchronized更灵活的锁操作。ReentrantLock是Lock接口的一个常用实现类,它支持可重入性,即同一个线程可以多次获取同一个锁而不会造成死锁。原创 2024-12-21 13:37:01 · 551 阅读 · 0 评论 -
java——防止 指令重排序(Instruction Reordering)与volatile关键字
指令重排序(Instruction Reordering)是现代计算机系统中优化性能的一种手段。具体来说,它指的是。这种重排序可以在不改变单线程程序执行结果的前提下,对指令执行顺序进行重新排列,。然而,。如果指令重排序没有考虑线程之间的同步和互斥,就可能导问题等,影响系统的正确性和稳定性。例如,一个线程可能看到另一个线程对共享变量的中间状态,而不是最终状态,从而导致不可预期的结果。为了解决指令重排序带来的问题,Java提供了一些机制来确保线程之间的同步和互斥。例如,volatile。原创 2024-12-03 11:21:05 · 719 阅读 · 0 评论 -
java多线程——双检查锁(Double-Checked Locking)
在多线程编程中,双检查锁(Double-Checked Locking)是一种常见的用于延迟初始化单例(Singleton)对象的优化技术。这种方法旨在减少获取锁的开销,同时确保线程安全。然而,双检查锁的正确实现需要注意一些细节,特别是在Java中,由于JVM的内存模型和指令重排序的问题,需要特别小心。原创 2024-12-03 10:38:49 · 375 阅读 · 0 评论 -
java多线程——@Contended
T1运行结果T2运行结果两种类的T1的结构比T2的结构简单,为什么程序运行效率却相差这么大呢?原创 2024-12-03 09:38:04 · 905 阅读 · 0 评论 -
计算机基础——内核、微内核、宏内核
微内核(Microkernel)是提供操作系统核心功能的内核的精简版本。它设计成在很小的内存空间内增加移植性,并提供模块化设计,以使用户能够安装不同的接口,如DOS、Workplace OS、Workplace UNIX等。原创 2024-12-02 13:46:37 · 928 阅读 · 0 评论 -
计算机基础——进程、线程、协程、纤程
进程是操作系统分配资源的基本单位。一个进程对应一个端口号,操作系统会为每一个进程独立分配一部分资源。通常,每运行一次程序,都会产生一个进程。原创 2024-12-02 11:54:20 · 386 阅读 · 0 评论 -
计算机基础——纤程(fiber)
定义:纤程是运行在用户态的轻量级线程,由操作系统实现的一种轻量化线程上的一个执行结构。纤程由Win32库函数支持,对操作系统内核是不可见的。特点占有资源少:与一般的线程相比,纤程占用的资源更少。例如,一般OS的线程占用1M,而纤程可能只占用4K。切换速度快:纤程的切换和调度不需要经过操作系统内核,因此切换速度非常快。合作式多任务:纤程采取合作式多任务(Cooperative multitasking),需要应用程序手动切换纤程。原创 2024-12-02 11:49:28 · 398 阅读 · 0 评论 -
计算机基础——线程与进程
进程是操作系统中的一个独立运行的实体,它是程序执行时的一个实例。进程具有独立的资源和状态,包括代码、数据和系统资源(如CPU、内存等)。原创 2024-12-02 11:36:46 · 312 阅读 · 0 评论 -
计算机基础——线程调度算法
线程调度算法是操作系统内核用于决定哪个线程应该在下一个时间片内获得CPU执行权的重要机制。原创 2024-12-02 11:28:36 · 1066 阅读 · 0 评论 -
变量的可见性、有序性、原子性,该如何理解?
可见性确保线程之间共享变量的最新值可见。有序性确保指令按照源代码的顺序执行,防止指令重排序导致的问题。原子性确保操作不可分割,避免竞态条件和数据不一致。在并发编程中,通常需要结合使用这些概念来确保程序的正确性和性能。例如,使用volatile关键字来提供可见性和有序性保证,同时使用原子变量来确保原子性操作。根据具体的场景和需求,可以选择合适的同步机制来实现这些保证。原创 2024-11-25 11:25:07 · 443 阅读 · 0 评论 -
C#中,Thread和Task的区别
在C#中,Thread和Task都是用于实现多线程编程的重要概念,但它们之间存在一些关键的区别。原创 2024-11-01 15:55:30 · 1189 阅读 · 0 评论 -
多线程与异步
多线程定义:多线程是指从软件或者硬件上实现多个线程并发执行的技术。线程是进程中的一部分,也是进程的实际运作单位,它是操作系统中的最小运算调度单位。实现方式:多线程通过操作系统提供的线程管理机制,实现多个线程在同一时间内并发执行。这些线程可以共享进程的资源,但也需要考虑线程间的同步和互斥机制,以避免数据竞争和死锁问题。异步定义:异步编程是一种基于事件驱动的编程模型,它允许程序在等待某个操作(如I/O操作)完成时,继续执行其他任务。实现方式:异步编程通常使用回调函数、协程或事件循环机制来处理异步操作。原创 2024-11-01 11:10:17 · 419 阅读 · 0 评论 -
java.util.concurrent包
java.util.concurrent包是Java中用于并发编程的重要工具集,提供了丰富的并发原语和组件,以简化多线程编程的复杂性,并帮助开发者编写高效、可伸缩和线程安全的并发程序。原创 2024-10-29 09:53:25 · 976 阅读 · 0 评论 -
利用CyclicBarrier提供的方法写一个包饺子的事例
CyclicBarrier类是Java中的一个同步工具类,用于实现多个线程之间的同步点。原创 2024-10-28 14:55:11 · 877 阅读 · 0 评论