并发
文章平均质量分 92
加油同学们
爱吃香蕉的猴哥
这个作者很懒,什么都没留下…
展开
-
线程池__
线程池本质上是一种对象池,用于管理线程资源。在任务执行前,需要从线程池中拿出线程来执行。在任务执行完成之后,把线程放回线程池。实际开发中,线程资源一般通过线程池提供,比如处理数据库连接、接收网络请求。如果队列已满,说明当前任务量已经非常大,仅靠核心线程池内的线程数量已无法处理。线程池会判断最大线程池是否已满,如果没满则创建更多线程,从等待队列首部取得任务并执行。当有新任务等待处理时,线程池会首先判断核心线程池是否已满,如果没满则创建线程执行任务。如果核心线程池已满,线程池会判断队列是否已满。原创 2024-09-24 09:30:58 · 251 阅读 · 0 评论 -
线程安全||
尝试获取资源,成功则返回true,失败则返回false。(这些重写方法很简单,无非是对于共享资源 state 的获取和释放) 将 AQS 组合在自定义同步组件的实现中,并调用其模板方法,而这些模板方法会调用使用者重写的方法。用来构建锁和同步器的框架,使用 AQS 能简单且高效地构造出应用广泛的大量的同步器,比如我们提到的 ReentrantLock,Semaphore 等。线程抢占资源时会通过 CAS 操作去尝试修改 state ,成功则获取锁成功,失败则进入等待队列等待被唤醒。读锁不能升级为写锁。原创 2024-09-24 09:29:39 · 945 阅读 · 0 评论 -
线程安全.
synchronized 关键字修饰方法时会对方法添加标志位,当线程执行到某个方法时,JVM会去检查该方法的访问标志是否被设置,如果设置了线程会先获取这个对象所对应的 monitor 对象,再执行方法体,方法执行完后释放 monitor。每次线程进入 synchronized 代码块时就会要求当前线程持有该对象锁,如果当前有其他线程正持有该对象锁,那么新到的线程就必须等待,这样也就保证了每次只有一个线程执行操作。允许一个线程对同一对象多次上锁。当线程需要获取的锁已经被其他线程占用时,该线程会被直接挂起。原创 2024-09-24 09:26:32 · 467 阅读 · 0 评论 -
线程的基本概念
但是 notify 方法不会释放当前进程的对象锁,如果该线程持有 obj 对象的锁,当前线程释放锁后被唤醒的其他线程才能被执行。方法,线程会停止运行并释放对象锁,同时线程进入线程 t 对象的等待池,直到被唤醒进入就绪状态。方法,线程会停止运行并释放对象锁 obj,其他线程可以访问其资源。调用 start 方法后,系统会开启一个新线程进入就绪状态:由 JVM 会自动对线程进行调度,在运行时调用并执行线程的 run 方法。方法,会停止运行进入阻塞状态,但仍会保持对象锁,其他线程不可访问其资源。原创 2024-09-24 09:24:42 · 790 阅读 · 0 评论