并发编程的艺术
窃听风吟007
这个作者很懒,什么都没留下…
展开
-
1.1 上下文切换
1.1 上下文切换: 多任务系统往往需要同时执行多道作业。 作业数往往大于机器的CPU数,然而一颗CPU同时只能执行一项任务,为了让用户感觉这些任务正在同时进行, 操作系统的设计者巧妙地利用了时间片轮转的方式,CPU给每个任务都服务一定的时间, 然后把当前任务的状态保存下来,在加载下一任务的状态后,继续服务下一任务。 任务的状态保存及再加载,这段过程就叫做...转载 2018-06-01 11:07:47 · 376 阅读 · 0 评论 -
1.2 死锁
1.2 死锁使线程t1和线程t2互相等待对方释放锁public class DeadLockDemo { private static String A = "A"; private static String B = "B"; public static void main(String[] args) { new DeadLockDemo().d...转载 2018-06-01 12:01:28 · 218 阅读 · 0 评论 -
1.3 资源限制问题
1.3 资源限制问题 资源限制: 并发编程时,程序的运行效率受制于计算机硬件和软件资源影响 如带宽大小 硬盘读写速度 cpu的处理速度 数据库的连接数 socket的连接数 并发编程的原则是: 将代码中串行执行的部分 变成并发执行 这时要考虑资源限制. 解决资源限制问题: 使用集群并行执行程序 对于软件资源限制,可以考虑使用...转载 2018-06-01 12:25:45 · 389 阅读 · 0 评论 -
2.1 volatile的使用
2.1 volatile的使用 它和synchronized都是并发编程的重要角色,volatile是轻量级的synchronized,保证共享变量的可见性. 可见性:当一些线程修改一个共享变量时,另外一个线程能读到这个修改的值. volatile的成本低,不会引起上下文切换. 2.1.1.定义与实现原理 Java编程语言允许线程访问共享变量,为了 ...转载 2018-06-01 14:32:36 · 241 阅读 · 0 评论