并发
我思故我菜
这个作者很懒,什么都没留下…
展开
-
AbstractQueuedSynchronizer分析
ReentrantLock原理分析ReentrantLock中有个成员变量Sync,提供同步机制。Sync继承了AbstractQueuedSynchronizer。Sync有两种实现,公平和非公平。可以在构造ReentrantLock的时候传递一个布尔值来决定实现公平或非公平。默认为非公平。以下都是基于非公平的实现。AbstractQueuedSynchronizer维护了锁的状态,提供一个阻塞队列,保存了获得锁的线程。lock()方法当线程进行加锁的时候,先通过...原创 2020-06-04 18:14:11 · 141 阅读 · 0 评论 -
线程常用方法
Object提供的wait()、notify()、notifyAll()wait()获得锁的线程执行过程中自己调用wait(),让自己进入阻塞状态(WAITING),并且会释放锁。wait方法实际上调用的wait(0);如果在没有锁的情况下调用,会怕抛出 IllegalMonitorStateExceptionnotify()由获得锁的线程进行调用, 随机唤醒同一把锁下的一个等待线程,让被唤醒的锁有资格去抢占锁(需要等到获得锁的线程释放锁后才能抢占)。同样的,在没有锁的情况下调用,会抛出原创 2020-06-02 12:22:23 · 148 阅读 · 0 评论 -
初始多线程
什么是线程认识线程前,先得清楚进程的概念。进程是资源(CPU、内存等)分配的基本单位,一个进程会由一个或多个线程组成。比方说,一个应用程序运行后生成一个进程(实际上可能会有多个进程),系统就会为该进程分配CPU、内存等资源。线程是CPU调度的基本单位。进程执行任务时,实际上是将任务分配给线程去由CPU调度执行的。Java中的线程Java中线程的创建Java中创建线程的方式有三种,分别为继承Thread类、实现Runnable接口、实现Callable接口。继承Thread类,重写run()方法p原创 2020-06-01 16:35:50 · 103 阅读 · 0 评论