返回顶部
上一页 1 ··· 6 7 8 9 10 11 12 13 14 ··· 24 下一页
摘要: 一.一个典型的Java线程安全例子 1 public class ThreadTest { 2 3 public static void main(String[] args) { 4 Account account = new Account("123456", 1000); 5 DrawMone 阅读全文
posted @ 2021-01-14 10:27 不懒人 阅读(145) 评论(0) 推荐(0) 编辑
摘要: 四.Java多线程的阻塞状态与线程控制 上文已经提到Java阻塞的几种具体类型。下面分别看下引起Java线程阻塞的主要方法。 1.join() join —— 让一个线程等待另一个线程完成才继续执行。如A线程线程执行体中调用B线程的join()方法,则A线程被阻塞,知道B线程执行完为止,A才能得以继 阅读全文
posted @ 2021-01-14 09:50 不懒人 阅读(122) 评论(0) 推荐(0) 编辑
摘要: 多线程作为Java中很重要的一个知识点,在此还是有必要总结一下的。 一.线程的生命周期及五种基本状态 关于Java中线程的生命周期,首先看一下下面这张较为经典的图: 上图中基本上囊括了Java中多线程各重要知识点。掌握了上图中的各知识点,Java中的多线程也就基本上掌握了。主要包括: Java线程具 阅读全文
posted @ 2021-01-14 09:27 不懒人 阅读(147) 评论(0) 推荐(0) 编辑
摘要: 一.死锁 经典的“哲学家进餐”问题很好地描述了死锁状况。5个哲学家去吃中餐,坐在-张圆桌旁。他们有5根筷子(而不是5双),并且每两个人中间放一根筷子。哲学家们时而思考,时而进餐。每个人都需要- -双筷子才能吃到东西,并在吃完后将筷子放回原处继续思考。有些筷子管理算法能够使每个人都能相对及时地吃到东西 阅读全文
posted @ 2021-01-13 22:19 不懒人 阅读(114) 评论(0) 推荐(0) 编辑
摘要: 一.在任务与执行策略之间的隐性耦合 1.线程饥饿死锁 在线程池中,如果任务依赖于其他任务,那么可能产生死锁。在单线程的Executor中,如果一个任务将另一个任务提交到同一个Executor,并且等待这个被提交任务的结果,那么通常会引发死锁。第二个任务停留在工作队列中,并等待第一个任务完成,而第一个 阅读全文
posted @ 2021-01-13 17:27 不懒人 阅读(184) 评论(0) 推荐(0) 编辑
摘要: 一.任务取消 其中一种协作机制能设置某个“已请求取消(Cancellation Requested)”标志,而任务将定期地查看该标志。如果设置了这个标志,那么任务将提前结束。 @ThreadSafe public class PrimeGenerator implements Runnable { 阅读全文
posted @ 2021-01-13 09:31 不懒人 阅读(587) 评论(0) 推荐(0) 编辑
摘要: 一.在线程中执行任务 1.串行的执行任务 在应用程序中可以通过多种策略来调度任务,而其中一些策略能够更好地利用潜在的并发性。最简单的策略就是在单个线程中串行地执行各项任务。下面的SingleThreadWebServer将串行地处理它的任务(即通过80端口接收到的HTTP请求)。 public cl 阅读全文
posted @ 2021-01-10 21:53 不懒人 阅读(419) 评论(0) 推荐(0) 编辑
摘要: 一.同步容器类 同步容器类包括Vector和Hashtable。 1.同步容器类的问题 同步容器类都是线程安全的,但在某些情况下可能需要额外的客户端加锁来保护复合操作。 public class UnsafeVectorHelpers { public static Object getLast(V 阅读全文
posted @ 2021-01-10 18:26 不懒人 阅读(88) 评论(0) 推荐(0) 编辑
摘要: 一.设计线程安全的类 分析对象的域,如果对象中所有的域都是基本类型的变量,那么这些域将构成对象的全部状态。 1.收集同步需求 一个类包含两个状态变量,分别表示范围的上界和下届。这些变量必须遵循的约束是,下界值应该小于或等于上界值。类似于这种包含多个变量的不变性条件将带来原子性需求:这些相关的变量必须 阅读全文
posted @ 2021-01-09 22:51 不懒人 阅读(164) 评论(0) 推荐(0) 编辑
摘要: 一.可见性 在下面代码中,主线程和读线程都将访问共享变量ready和number。主线程启动读线程,然后将number 设为42,并将ready设为true。读线程一直循环直到发现ready的值变为true,然后输出number 的值。虽然NoVisibility 看起来会输出42,但事实上很可能输 阅读全文
posted @ 2021-01-07 13:43 不懒人 阅读(136) 评论(0) 推荐(0) 编辑
上一页 1 ··· 6 7 8 9 10 11 12 13 14 ··· 24 下一页