上一页 1 2 3 4 5 6 7 8 9 10 ··· 16 下一页
摘要: 前面介绍了普通线程池的用法,就大多数任务而言,它们对具体的执行时机并无特殊要求,最多是希望早点跑完早点出结果。不过对于需要定时执行的任务来说,它们要求在特定的时间点运行,并且往往不止运行一次,还要周期性地反复运行。由于普通线程池满足不了此类定时运行的需求,因此Java又提供了定时器线程池来实现定时与 阅读全文
posted @ 2019-06-01 10:54 pinlantu 阅读(4168) 评论(0) 推荐(0) 编辑
摘要: 前面介绍了线程的基本用法,以及多线程并发的问题处理,但实际开发中往往存在许多性质相似的任务,比如批量发送消息、批量下载文件、批量进行交易等等。这些同类任务的处理流程一致,不存在资源共享问题,相互之间也不需要通信交互,总之每个任务都可以看作是单独的事务,仿佛流水线上的原材料经过一系列步骤加工之后变为成 阅读全文
posted @ 2019-05-29 19:52 pinlantu 阅读(384) 评论(0) 推荐(0) 编辑
摘要: 前面介绍了多线程并发之时的资源抢占情况,以及利用同步、加锁、信号量等机制解决资源冲突问题,不过这些机制只适合同一资源的共享分配,并未涉及到某件事由的前因后果。日常生活中,经常存在两个前后关联的事务,像雇员和雇主这两个角色,他们之间的某些工作就带有因果关系。比如要等雇主接到了项目,雇员才有活干;又如每 阅读全文
posted @ 2019-05-27 21:59 pinlantu 阅读(484) 评论(0) 推荐(0) 编辑
摘要: 前面介绍了同步与加锁两种并发处理机制,虽然加锁比起同步要灵活一些,但是加锁在某些高级场合依然力有未逮,包括但不限于下列几点:1、某块代码被加锁之后,对其它线程而言就处于繁忙状态,缺乏弹性的阈值范围;2、遇到被其它线程加锁的情况,当前线程要么一直等待,要么立即放弃,除了这两种反应之外,没有别的选择了; 阅读全文
posted @ 2019-05-25 10:35 pinlantu 阅读(927) 评论(0) 推荐(0) 编辑
摘要: 前面介绍了如何通过线程同步来避免多线程并发的资源冲突问题,然而添加synchronized的方式只在简单场合够用,在一些高级场合就暴露出它的局限性,包括但不限于下列几点:1、synchronized必须用于修饰方法或者代码块,也就是一定会有花括号把需要同步的代码给包裹起来。这样的话,花括号内外的变量 阅读全文
posted @ 2019-05-22 19:23 pinlantu 阅读(306) 评论(0) 推荐(0) 编辑
摘要: 多个线程一起办事固然能够加快处理速度,但是也带来一个问题:两个线程同时争抢某个资源时该怎么办?看来资源共享的另一面便是资源冲突,正所谓鱼与熊掌不可兼得,系统岂能让多线程这项技术专占好处?果然是有利必有弊,且看之前演示售票任务时候的多线程操作,具体代码如下所示: 光光看代码感觉并无不妥之处,仅仅是起了 阅读全文
posted @ 2019-05-20 21:54 pinlantu 阅读(496) 评论(0) 推荐(0) 编辑
摘要: 前面介绍了线程的几种运行方式,不管哪种方式,一旦调用了线程实例的start方法,都会立即启动线程的事务处理。然而某些业务场景在事务执行时间方面有特殊需求,例如期望延迟若干时间之后才开始事务运行,又如期望每隔若干时间依次启动事务处理,如此种种都要求在指定的时间才能启动线程任务,也就是俗称的定时功能。有 阅读全文
posted @ 2019-05-18 11:28 pinlantu 阅读(1016) 评论(0) 推荐(0) 编辑
摘要: 前面介绍了如何利用Runnable接口构建线程任务,该方式确实方便了线程代码的复用与共享,然而Runnable不像公共方法那样有返回值,也就无法将线程代码的处理结果传给外部,造成外部既不知晓该线程是否已经执行完毕,也不了解该线程的运算结果是什么,总之无法跟踪分线程的行动踪迹。这里显然是不完美的,调用 阅读全文
posted @ 2019-05-15 19:18 pinlantu 阅读(961) 评论(0) 推荐(0) 编辑
摘要: 前面介绍了线程的基本用法,按理说足够一般的场合使用了,只是每次开辟新线程,都得单独定义专门的线程类,着实开销不小。注意到新线程内部真正需要开发者重写的仅有run方法,其实就是一段代码块,分线程启动之后也单单执行该代码段而已。因而完全可以把这段代码抽出来,把它定义为类似方法的一串任务代码,这样能够像调 阅读全文
posted @ 2019-05-13 21:36 pinlantu 阅读(1244) 评论(0) 推荐(0) 编辑
摘要: 每启动一个程序,操作系统的内存中通常会驻留该程序的一个进程,进程包含了程序的完整代码逻辑。一旦程序退出,进程也就随之结束;反之,一旦强行结束进程,程序也会跟着退出。普通的程序代码是从上往下执行的,遇到分支语句则进入满足条件的分支,遇到循环语句总有跳出循环的时候,遇到方法调用则调用完毕仍然返回原处,之 阅读全文
posted @ 2019-05-11 10:39 pinlantu 阅读(450) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 7 8 9 10 ··· 16 下一页