上一页 1 2 3 4 5 6 7 ··· 17 下一页
摘要: 创建一个线程只需要,New Thread();,就可以完成,但是在JVM里面是一个很重的操作,需要调用操作系统内核的 API,然后操作系统要为线程分配一系列的资源。 所以线程是一个重量级的对象,应该避免频繁创建和销毁。 线程池是一种生产者-消费者模式,目前对于池化技术的实现一般都需要依赖容器来进行实 阅读全文
posted @ 2021-01-04 11:10 smartcat994 阅读(96) 评论(0) 推荐(0) 编辑
摘要: 并发编程的几个注意点,原子性一直是需要提到的。 在思想里面,一个是volatile实现可见性,或者加锁实现原子性。syn的本质其实是管程(也就是监视器),JVM层面的。Lock是JDK层面的,AQS实现 还有一个就是原子性。Java 里面提供的是Atomic家族。 原子性!=CAS,CAS是一种思想 阅读全文
posted @ 2021-01-04 10:02 smartcat994 阅读(122) 评论(0) 推荐(0) 编辑
摘要: 题目:有个对账系统需要进行优化,用户通过在线商城下单,会生成电子订单,保存在订单库;之后物流会生成派送单给用户发货,派送单保存在派送单库。为了防止漏派送或者重复派送,对账系统每天还会校验是否存在异常订单。 首先查询订单,然后查询派送单,之后对比订单和派送单,将差异写入差异库。 核心代码如下,就是在一 阅读全文
posted @ 2020-12-31 08:49 smartcat994 阅读(94) 评论(0) 推荐(0) 编辑
摘要: 在Java1.8之后提供了一种印章锁,性能上读写锁更快,并且支持乐观锁,悲观锁。 其中,写锁、悲观读锁的语义和 ReadWriteLock 的写锁、读锁的语义非常类似,允许多个线程同时获取悲观读锁,但是只允许一个线程获取写锁,写锁和悲观读锁是互斥的。不同的是:StampedLock 里的写锁和悲观读 阅读全文
posted @ 2020-12-30 15:08 smartcat994 阅读(120) 评论(0) 推荐(0) 编辑
摘要: 一种非常普遍的并发场景:读多写少场景。实际工作中,为了优化性能,我们经常会使用缓存,例如缓存元数据、缓存基础数据等,这就是一种典型的读多写少应用场景。缓存之所以能提升性能,一个重要的条件就是缓存的数据一定是读多写少的,例如元数据和基础数据基本上不会发生变化(写少),但是使用它们的地方却很多(读多)。 阅读全文
posted @ 2020-12-30 11:06 smartcat994 阅读(75) 评论(0) 推荐(0) 编辑
摘要: 信号量是由大名鼎鼎的计算机科学家迪杰斯特拉(Dijkstra)于 1965 年提出,在这之后的 15 年,信号量一直都是并发编程领域的终结者,直到 1980 年管程被提出来,我们才有了第二选择。目前几乎所有支持并发编程的语言都支持信号量机制。 信号量的模型 一个计数器+一个等待队列+三个对外开放的方 阅读全文
posted @ 2020-12-30 10:40 smartcat994 阅读(106) 评论(0) 推荐(0) 编辑
摘要: 两大核心问题:一个是互斥,即同一时刻只允许一个线程访问共享资源;另一个是同步,即线程之间如何通信、协作。这两大问题,管程都是能够解决的。Java SDK 并发包通过 Lock 和 Condition 两个接口来实现管程,其中 Lock 用于解决互斥问题,Condition 用于解决同步问题。 Jav 阅读全文
posted @ 2020-12-29 16:57 smartcat994 阅读(111) 评论(0) 推荐(0) 编辑
摘要: 如果在设计的时候就按照单线程的思想进行设计,敲出的代码可能上线之后就会有很多问题,如何利用思想设计出符合线程安全的代码呢? 理论上面向对象编程和并发编程是没有关系的,但是面向对象编程可以更好的提升设计并发时候的逻辑 可以从三个角度上去思考,封装共享变量,识别共享变量之间的约束条件,制定并发访问策略。 阅读全文
posted @ 2020-12-29 14:18 smartcat994 阅读(64) 评论(0) 推荐(0) 编辑
摘要: 通用的线程生命周期基本上可以用下图这个“五态模型”来描述。这五态分别是:初始状态、可运行状态、运行状态、休眠状态和终止状态。 初始状态,指的是线程已经被创建,但是还不允许分配 CPU 执行。这个状态属于编程语言特有的,不过这里所谓的被创建,仅仅是在编程语言层面被创建,而在操作系统层面,真正的线程还没 阅读全文
posted @ 2020-12-29 11:22 smartcat994 阅读(129) 评论(0) 推荐(0) 编辑
摘要: 处理多线程可以从信号量和管程来进行。Linux就是使用信号量对进行多线程的。 信号量是1965荷兰Dijkstra为了解决并发进程问题 而提出的一个重要操作系统的思想 信号量是操作系统提供的一种协调共享资源访问的方法。和用软件实现的同步比较,软件同步是平等线程间的的一种同步协商机制,不能保证原子性。 阅读全文
posted @ 2020-12-28 16:31 smartcat994 阅读(332) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 7 ··· 17 下一页