11 2020 档案

摘要:一.递归算法的并行化 1.如果在循环中包含了一些密集型计算,或者需要执行可能阻塞的I/O操作,那么只要每次迭代是独立的,都可以对其进行并行化。 2.如果循环中的迭代操作都是独立的,并且不需要等待所有迭代操作都完成后再继续执行,那么就可以使用Executor将串行循环转化为并行循环。如下: //串行循 阅读全文
posted @ 2020-11-30 10:01 文牧之 阅读(65) 评论(0) 推荐(0) 编辑
摘要:一.如何设置线程池的大小? 有时候我们使用线程池的时候对它的大小的设置没有头绪,下面的学习将对我们在使用线程池的时候如何设置其大小非常有用。 首先,线程池的理想大小取决于被提交任务的类型以及所部署系统的特性,在代码中通常不会固定线程池的大小,而应该通过某种配置机制来提供,或者根据Runtime.av 阅读全文
posted @ 2020-11-28 09:37 文牧之 阅读(27) 评论(0) 推荐(0) 编辑
摘要:一.一些特殊的任务 我们知道Executor框架可以将任务的提交与任务的执行策略解耦开来,虽然Executor框架为制定和修改执行策略都提供了相当大的灵活性,但并非所有任务都能适用于所有的执行策略。 1.一些特殊类型的任务需要明确的指定执行策略: 1).依赖性任务。 如果提交给线程池的任务需要依赖其 阅读全文
posted @ 2020-11-27 09:41 文牧之 阅读(5) 评论(0) 推荐(0) 编辑
摘要:一.JVM关闭 当我们创建一个主线程时,JVM都会创建一个JVM实例进程来运行线程,JVM进程既可以正常关闭,也可以强行关闭。 正常关闭的触发方式有很多:1)当最后一个“正常(非守护)”线程结束时 。2)调用了System.exit 。3)通过其他特定于平台的方法关闭。 强行关闭:我们也可以通过调用 阅读全文
posted @ 2020-11-26 11:33 文牧之 阅读(20) 评论(0) 推荐(0) 编辑
摘要:一.如何处理非正常的线程终止 我们都知道。当单线程的控制台程序由于发生了一个未捕获的异常而终止时,程序将停止运行,并产生与程序正常输出非常不同的栈追踪信息。 但是, 在并发程序中,单个线程的故障很有可能不会影响到整体,而这时的控制台中可能会输出栈追踪信息,但是没人看去看它,就相当于这个异常被忽略!! 阅读全文
posted @ 2020-11-26 09:53 文牧之 阅读(7) 评论(0) 推荐(0) 编辑
摘要:一.停止基于线程的服务 1.一般的应用程序中会创建多个线程的服务,例如线程池,我们创建一个线程池的服务时,它会又创建多个线程,如果我们不关闭服务,它会一直存在,所以服务的生命周期通常比创建它们的方法的生命周期更长。如果应用程序准备退出,应用程序会关闭服务,服务又会关闭它拥有的线程。由于无法通过抢占式 阅读全文
posted @ 2020-11-24 15:28 文牧之 阅读(8) 评论(0) 推荐(0) 编辑
摘要:文章目录 1.异常概述1.1 遇到异常我们应该怎么做? 2.异常处理机制学习2.1.处理错误2.2 常见的错误2.2.1 用户输入错误2.2.2 设备错误2.2.3 物理限制2.2.4 代码错误 2.3 异常分类2.3.1 Error类2.3.2 Exception2.3.3 检查型异常和非检查型异 阅读全文
posted @ 2020-11-23 16:25 文牧之 阅读(11) 评论(0) 推荐(0) 编辑
摘要:一.不可中断的阻塞 1.我们知道在Java库中,许多可阻塞的方法都是通过提前返回或者抛出InterruptedException来响应中断请求的,从而使开发人员更容易构建出能响应取消请求的任务。 2.然而,并非所有的可阻塞方法或者阻塞机制都能响应中断。 如果一个线程由于执行同步的Socket I/O 阅读全文
posted @ 2020-11-23 14:49 文牧之 阅读(22) 评论(0) 推荐(0) 编辑
摘要:一. 中断策略学习 我们前面学习了任务包含取消策略,同样的,线程应该包含中断策略。 1.中断策略规定线程如何解释某个中断请求:当发现中断请求时,线程应该做哪些工作(如果需要的话),哪些工作单元对于中断来说是原子操作,以及以多快的速度来响应中断。 2.最合理的中断策略是某种形式的线程级取消操作或者服务 阅读全文
posted @ 2020-11-22 15:37 文牧之 阅读(18) 评论(0) 推荐(0) 编辑
摘要:一.任务取消概述 1.我们为什么需要取消任务? 任务和线程的启动很容易,在大多数时候,我们都希望它运行直到结束。然而有时候我们需要提前结束任务或线程,原因可能是用户取消了操作,可能是应用程序需要被快速关闭。 2.如何取消任务? 要使任务和线程能安全,快速,可靠地停下来并不是一件很容易的事情。 Jav 阅读全文
posted @ 2020-11-20 14:46 文牧之 阅读(28) 评论(0) 推荐(0) 编辑
摘要:我们在开发中可能会遇到这种情况: 有时候如果某个任务无法在指定时间内完成,那么将不再需要它的结果,此时可以放弃这个任务。 例如:某个Web应用程序从外部的广告服务器上获取广告信息,但如果该应用程序在2s中不能得到响应,那么将显示一个默认的广告,类似的,一个门户网站可以从多个数据源并行的获得数据,但可 阅读全文
posted @ 2020-11-19 12:05 文牧之 阅读(7) 评论(0) 推荐(0) 编辑
摘要:一.如何找出可利用的并行性 Executor框架帮助指定执行策略,但如果要使用Executor,必须将任务表述为一个Runnable。 在大多数服务器应用程序中都存在一个明显的任务边界:单个用户请求。 但有时候任务边界并非显而易见。 我们要解决的就是这种情况下如何找出可发掘的并发性。 例如即使在服务 阅读全文
posted @ 2020-11-18 17:44 文牧之 阅读(10) 评论(0) 推荐(0) 编辑
摘要:一.我们为什么需要Executor框架? 在上一篇博客中我们可以了解到,任务是一组逻辑工作单元,而线程则是使任务异步执行的机制,而且我们学习了两种通过线程来执行任务的策略:1.把所有任务放在单个线程中串行执行 , 2.将每个任务放到各自的线程中执行 但是上面的两种策略都存在严格的限制: 串行执行的问 阅读全文
posted @ 2020-11-17 13:18 文牧之 阅读(6) 评论(0) 推荐(0) 编辑
摘要:一.执行任务 其实大多数的并发应用程序都是围绕着“ 执行任务“来构造的 。 1.什么是任务? 任务通常是一些抽象且离散的工作单元,我们通过把应用程序的工作分解到多个任务中简化程序的组织结构,提供一种自然的事务边界来优化错误恢复过程,以及提供一种自然的并行工作结构来提升并发性。 2.在线程中执行任务 阅读全文
posted @ 2020-11-16 15:59 文牧之 阅读(16) 评论(0) 推荐(0) 编辑
摘要:一.缓存 缓存是一种非常好的机制,几乎所有服务器应用程序都会使用某种形式的缓存,缓存的目的是以牺牲一些内存的方式重用之前计算结果的方式达到降低延迟,提高吞吐量的效果。 二.开发高效且可伸缩的缓存 1.第一次尝试 1).在下面代码中的Computable<A,V>接口中声明了一个方法Computabl 阅读全文
posted @ 2020-11-15 10:53 文牧之 阅读(6) 评论(0) 推荐(0) 编辑
摘要:一.同步工具类概述 1.什么是同步工具类? 同步工具类可以是任何一个对象,只要他可以根据其自身的状态来协调线程的控制流。 例如: 阻塞队列可以作为同步工具类,还有其它的同步工具类:信号量(Semaphore),栅栏(Barrier),闭锁(Latch)。 在java类库中还包括一些其他的同步工具类, 阅读全文
posted @ 2020-11-14 14:07 文牧之 阅读(26) 评论(0) 推荐(0) 编辑
摘要:一.阻塞方法 1.线程会阻塞或暂停执行的原因有很多种,比如:等待I/O操作结束,等待获得一个锁,等待从Thread.sleep中醒来,或者等待另一个线程的计算结果。 2.当线程阻塞时,它通常只是被挂起而不是结束,此时的线程会处于阻塞的一种状态,这要视情况而定。 3.阻塞操作与普通操作的差别在于,被阻 阅读全文
posted @ 2020-11-13 20:48 文牧之 阅读(13) 评论(0) 推荐(0) 编辑
摘要:我们知道Redis是一个基于内存的数据库,所有的数据都存储在内存中,所以我们需要学习如何优化存储,用最小的代价得到最好的性能。 在使用Redis的过程中,我们可以使用下面的方式来节省空间: 一.精简键名和键值 这是一种很直观的减少内存占用的方式,这种方式的目标是:用最简洁的名称表达最好的效果。切忌为 阅读全文
posted @ 2020-11-11 15:38 文牧之 阅读(6) 评论(0) 推荐(0) 编辑
摘要:一.了解MySQL的优化 MySQL优化,一方面是找出系统的瓶颈,提高MySQL数据库整体的性能,这个时期的优化一般在开发完成后并使用了一段时间进行的。 另一方面需要合理的结构设计和参数调整,节省系统资源,这个时期的优化一般在开发期完成的,这时项目还没投入使用。 MySQL的优化原则是:减少系统瓶颈 阅读全文
posted @ 2020-11-05 11:26 文牧之 阅读(4) 评论(0) 推荐(0) 编辑
摘要:上一篇博客主要学习了java中的同步容器,但在一些情况下,同步容器也会出现线程安全性的问题,如需要进行一些复合外部操作时,进行迭代时容易发生ConcurrentModificationException错误。 本篇博客主要学习一个相对于同步容器更好的容器集合:并发容器 一.并发容器 在Java 5. 阅读全文
posted @ 2020-11-02 18:56 文牧之 阅读(5) 评论(0) 推荐(0) 编辑

more_horiz
keyboard_arrow_up dark_mode palette
选择主题
点击右上角即可分享
微信分享提示