随笔分类 -  Java多线程

Java 多线程相关的知识
摘要:AQS 队列同步器(AbstractQueuedSynchronizer),是用来构建锁或者其他同步组件的基础框架,它使用了一个int成员变量表示同步状态,通过内置的FIFO队列来完成资源获取线程的排队工作。 同步器的主要使用方式是继承,子类通过继承同步器并实现它的抽象方法来管理同步状态,在抽象方法 阅读全文
posted @ 2021-06-15 22:54 有心有梦 阅读(146) 评论(0) 推荐(0)
摘要:Condition接口 任意一个Java对象都有一组监视器方法,这些方法定义在所有类的共同超类Obejct中,主要包括wait()、wait(long timeout)、notify()和notifyAll(),这些方法与synchronized同步关键字配合,可以实现等待/通知模式。 Condit 阅读全文
posted @ 2021-06-13 14:26 有心有梦 阅读(136) 评论(0) 推荐(0)
摘要:读写锁在同一时刻可以允许多个读线程访问,但是在写线程访问时,所有的读线程和其他写线程均被阻塞。读写锁维护了一对锁,一个读锁和一个写锁,通过分离读锁和写锁,使得并发性相比一般的排它锁有了很大的提升。 一般情况下,读写锁的性能都会比排它锁好,因为大多数场景读是多于写的。在读多于写的情况下,读写锁能够提供 阅读全文
posted @ 2021-06-09 13:45 有心有梦 阅读(835) 评论(0) 推荐(0)
摘要:实现多线程编程主要有两种方式:一种是继承Thread类,一种是实现Runnable接口。这两种方式在运行结果上其实并没有多大的差别,但是应用场景和内部执行流程还是有区别的。 其实Thread类也是实现了Runnable接口的类,这点通过其源码就可以看出来: public class Thread i 阅读全文
posted @ 2020-06-15 11:21 有心有梦 阅读(1371) 评论(0) 推荐(0)
摘要:线程通信 应用场景:生产者消费者问题 假设仓库中只能存放一件产品,生产者将生产出来的产品放入仓库,消费者将仓库中产品取走消费; 如果仓库中没有产品,则生产者将产品放入仓库,否则停止生产并等待,直到仓库中的产品被消费者取走为止; 如果仓库中放有产品,则消费者可以将产品取走消费,否则停止消费并等待,直到 阅读全文
posted @ 2020-03-27 00:40 有心有梦 阅读(146) 评论(0) 推荐(0)