java并发学习 读书笔记二

本文介绍了Java中的Executor框架,包括不同类型的线程池及其应用场景,如定长线程池、可缓存线程池等。此外还介绍了完成服务CompletionService、SwingUtilities工具类、Future接口、死锁现象及预防措施、Amdahl定律等内容。
Executor框架介绍

1、Executor框架提供了一个灵活的线程池实现,防止应用程序过载而耗尽内存。它是基于生产者-消费者模式的,提交任务的线程是生产者,执行任务的线程是消费者。

2、线程池
newFixedThreadPool创建一个定长的线程池,每当提交一个任务就创建一个线程,直到达到池的最大长度,这是线程池会保持长度不再变化(如果一个线程由于非预期的Exception而结束,线程池会补充一个新的线程)。
newCachedThreadPool创建一个可缓存的线程池,如果当前线程池的长度超过了处理的需要时,它可以灵活地回收空闲的线程。当需求增加时,它可以灵活的添加新的线程,而并不会对池的长度作任何限制。
newSingleThreadExecutor创建一个单线程化的executor,它只创建唯一的工作者线程来执行任务,如果这个线程异常结束,会有另一个取代它。executor会保证任务依照任务队列所规定的顺序(FIFO,LIFO,优先级)执行。
newScheduledThreadPool创建一个定长的线程池,而且支持定时的以及周期性的任务执行。

3、完成服务CompletionService
CompletionService整合了Executor和BlockingQueue的功能,你可以将Callable任务提交给它去执行,然后使用类似队列中take和poll方法,在任务结果完整可用时获得这个结果。

4、SwingUtilities.invokeAndWait,它可以安排一个Runnable任务在事件派发线程中执行,并会阻塞当前线程直到它完成(只能从非GUI线程中调用,否则会发生死锁)
SwingUtilities.invokeAndLater,它可以安排一个Runnable任务在事件派发线程中执行(可从任意线程中调用)

5、Future是被设计来处理可取消任务,所以遇到任务处理有取消需求时,可以考虑用Future

6、发生死锁的原因:两个或者多个线程企图以不同的顺序获得相同的多个锁时会发生
例子:
public class LeftRightDeadLock{
private Object left = new Object();
private Object right = new Object();

public void leftRight(){
synchronized(left){
synchronized(right){
doSomething();
}
}
}

public void rightLeft(){
synchronized(right){
synchronized(left){
doSomething();
}
}
}
}


7、Amdahl定律
Amdahl定律描述了在一个系统中,基于可并行化和串行化组件各自所占的比重,程序通过获得额外的计算资源,理论上能够加速多少。如果F是必须串行化执行的比重,N代表处理器数,提速公式为:
SpeedUp <= 1/ (F + (1 - F)/N)

8、创建Lock/ReentrantLock机制的意义
内部锁在大部分情况下都能很好的工作,但是有一些功能上的局限--不能中断那些等待获取锁的线程,并且在请求锁失败的情况下只能无限等待。内部锁必须在获取它的代码中释放;这很好的简化了代码,与异常处理机制能够良好的互动。但在某些情况下,一个更灵活的加锁机制提供了更好的活跃度和性能。
【无人机】基于改进粒子群算法的无人机路径规划研究[和遗传算法、粒子群算法进行比较](Matlab代码实现)内容概要:本文围绕基于改进粒子群算法的无人机路径规划展开研究,重点探讨了在复杂环境中利用改进粒子群算法(PSO)实现无人机三维路径规划的方法,并将其与遗传算法(GA)、标准粒子群算法等传统优化算法进行对比分析。研究内容涵盖路径规划的多目标优化、避障策略、航路点约束以及算法收敛性和寻优能力的评估,所有实验均通过Matlab代码实现,提供了完整的仿真验证流程。文章还提到了多种智能优化算法在无人机路径规划中的应用比较,突出了改进PSO在收敛速度和全局寻优方面的优势。; 适合人群:具备一定Matlab编程基础和优化算法知识的研究生、科研人员及从事无人机路径规划、智能优化算法研究的相关技术人员。; 使用场景及目标:①用于无人机在复杂地形或动态环境下的三维路径规划仿真研究;②比较不同智能优化算法(如PSO、GA、蚁群算法、RRT等)在路径规划中的性能差异;③为多目标优化问题提供算法选型和改进思路。; 阅读建议:建议读者结合文中提供的Matlab代码进行实践操作,重点关注算法的参数设置、适应度函数设计及路径约束处理方式,同时可参考文中提到的多种算法对比思路,拓展到其他智能优化算法的研究与改进中。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值