共 13 页: 上一页 1 2 3 4 5 6 下一页 末页
摘要:之前的两篇文章中,我们介绍了异步编程,也介绍了线程池的基本概念。也说了,线程池的实现天生也实现了异步任务,允许直接向线程池中进行任务的提交与结果获取。 但是,我们始终没有去深入的了解下,异步任务框架对于任务执行的进度是如何监控的,任务执行的结果该如何获取。 那么,本篇文章就来详细地探讨下异步框架中, 阅读全文
posted @ 2019-01-22 10:08 Single_Yam 阅读 (383) 评论 (0) 编辑
摘要:线程池,是一种线程的使用模式,它为了降低线程使用中频繁的创建和销毁所带来的资源消耗与代价。 通过创建一定数量的线程,让他们时刻准备就绪等待新任务的到达,而任务执行结束之后再重新回来继续待命。 这就是线程池最核心的设计思路,「 复用线程,平摊线程的创建与销毁的开销代价 」。 相比于来一个任务创建一个线 阅读全文
posted @ 2019-01-18 12:49 Single_Yam 阅读 (880) 评论 (1) 编辑
摘要:异步编程是一种对 CPU 资源更高效的编程方式,也是提高系统吞吐量的一个非常不错的选择。很多人会认为所谓的异步不就是多线程吗? 但实际上这句话只能说对一半,没错,异步是通过多线程来实现的,但我们 Java 中的异步编程却绝不仅仅只是多线程,它还包括对任务执行状态的监控、随时可以选择性的中断任务的执行 阅读全文
posted @ 2019-01-15 11:13 Single_Yam 阅读 (419) 评论 (3) 编辑
摘要:我们之前介绍 synchronized 关键字语义的时候说过,synchronized 虽然不需要我们手动的加锁和释放锁了,但不代表他没有用到锁。同时,我们说每个对象本身结构中也内置了阻塞队列,线程持有器,锁重入计数器等字段。 所以,与其说是 synchronized 实现了「自动化的锁机制」,不如 阅读全文
posted @ 2019-01-11 09:45 Single_Yam 阅读 (251) 评论 (0) 编辑
摘要:上一篇文章我们介绍了一个显式锁,ReentrantLock ,了解到它是一个『独占式』锁,简而言之就是, 我拿到锁以后,不管我是读或是写操作,其他人都不能和我抢,都得等着。 因而在某些读操作远大于写操作的场景之下,即便我只是读数据也不得不排队一个一个来,于是有人提出了一个『读写锁』的概念。 『读写锁 阅读全文
posted @ 2019-01-08 09:49 Single_Yam 阅读 (340) 评论 (0) 编辑
摘要:Synchronized 关键字结合对象的监视器,JVM 为我们提供了一种『内置锁』的语义,这种锁很简便,不需要我们关心加锁和释放锁的过程,我们只需要告诉虚拟机哪些代码块需要加锁即可,其他的细节会由编译器和虚拟机自己实现。 可以将我们的『内置锁』理解为是 JVM 的一种内置特性, 所以一个很显著的问 阅读全文
posted @ 2018-10-10 20:20 Single_Yam 阅读 (424) 评论 (0) 编辑
摘要:计算机系统中,CPU 和内存之间是通过总线进行通信的,当某个线程占有 CPU 执行指令的时候,会尽可能的将一些需要从内存中访问的变量缓存在自己的高速缓存区中,而修改也不会立即映射到内存。 而此时,其他线程将看不到内存中该变量的任何改动,这就是我们说的内存可见性问题。连续的文章中,我们总共提出了两种解 阅读全文
posted @ 2018-09-30 16:42 Single_Yam 阅读 (1352) 评论 (0) 编辑
摘要:『中断技术』其实是计算机系统中很重要的一个概念,甚至有人说,我们的操作系统就是「中断驱动的」。 中断,其实指的就是程序在执行过程中,发生了某些非正常的事件指示当前进程不能继续执行了,应当得到暂停或终止,而通知正在执行的进程暂停执行的这个操作就叫『中断』。 中断同时也是我们实现并发的基础,中断一个线程 阅读全文
posted @ 2018-09-14 15:47 Single_Yam 阅读 (615) 评论 (1) 编辑
摘要:上篇文章我们介绍了 synchronized 这个关键字,通过它可以基本实现线程间在临界区对临界资源正确的访问与修改。但是,它依赖一个 Java 对象内置锁,某个时刻只能由一个线程占有该锁,其他试图占有的线程都得阻塞在对象的阻塞队列上。 但实际上还有一种情况也是存在的,如果某个线程获得了锁但在执行过 阅读全文
posted @ 2018-09-07 15:37 Single_Yam 阅读 (607) 评论 (2) 编辑
摘要:使用 Synchronized 关键字来解决并发问题是最简单的一种方式,我们只需要使用它修饰需要被并发处理的代码块、方法或字段属性,虚拟机自动为它加锁和释放锁,并将不能获得锁的线程阻塞在相应的阻塞队列上。 基本使用 我们在上篇文章介绍线程的基本概念时,提到了多线程的好处,能够最大化 CPU 使用效率 阅读全文
posted @ 2018-08-27 13:42 Single_Yam 阅读 (633) 评论 (1) 编辑
共 13 页: 上一页 1 2 3 4 5 6 下一页 末页