Java并发程序
文章平均质量分 76
qq_36120793
弱鸡 菜鸟 。
展开
-
并发编程——创建线程安全的类,对象组合
1.1 实例封闭 我们时常需要创建一个线程安全的类,那么第一步,收集同步需求,并将同步策略写成正式文档。例如:1.状态变量的上届和下届值,范围;2.依赖状态的操作:比如某些方法中,包含一些先验条件,再删除某个元素前,队列必须处于非空状态。如果某个对象不是线程安全的,那么可以通过多种技术在多线程程序中安全地使用。我们可以确保该对象智能由单个线程访问(线程封闭),或者通过一个锁来保护对该对象的所...原创 2018-06-04 00:26:02 · 758 阅读 · 0 评论 -
并发编程——关于任务的执行(Task Execution)
1.多线程套接字编程中的不足 记得之前做过学校的一个实验,是关于多线程套接字编程地,在那次实验中,我们采用了如下的代码:ServerSocket server = new ServerSocket(80);while(true){ //新建线程 new Thread(xxx).start; }在上方代码,我们为了提升服务器的效率,我们使用了多线程编程,但是...原创 2018-06-12 00:33:14 · 1337 阅读 · 0 评论 -
并发基础知识(一·)
1.1 什么是线程安全性 当多个线程访问某个类时,不管运行时环境采用何种调度方式或者这些线程将如何交替执行,并且在主调代码中不需要任何额外的同步或协同,这个类都能表现出正确的行为,那么就称这个类是线程安全的。1.2 原子性//存在于类A中的变量count++count;现在假设有两个线程,他们都将运行上方 count++的代码,那么在当前的多线程环境下,他很会可能出错,那是因为...原创 2018-05-30 03:00:26 · 346 阅读 · 0 评论 -
并发编程————基础模块的介绍
一、同步容器类 同步容器类包括Vector和Hashtable,二者之外还包括在JDK1.2中添加的一些功能类似的类,就是那些以Collection.synchronizedXxxx等工厂方法创建的同步的封装器类。这些类实现线程安全的方式是:将他们的状态封装起来,并对每个公有方法都进行方法同步,使得每次只有一个线程能访问容器的状态。1.1同步容器类的问题 同步容器类都是线程安全地,但是在某...原创 2018-06-06 16:09:17 · 281 阅读 · 0 评论 -
并发编程——构建高效切可伸缩的结果缓存
使用HsahMap 首先我们定义一个Computable接口,该接口包含一个compute()方法,该方法是一个耗时很久的数值计算方法。Memoizer1是第一个版本的缓存,该版本使用hashMap来保存之前计算的结果,compute方法将首先检查需要的结果是否已经在缓存中,如果存在则返回之前计算的值,否则重新计算并把结果缓存在HashMap中,然后再返回。interface Comp...原创 2018-06-06 16:15:47 · 302 阅读 · 0 评论 -
并发——对象的共享
1.1可见性的理解 我们已经知道了同步代码块和同步方法可以确保以原子性的方式执行操作,但是,同步还有另一方面的重要作用:内存可见性。我们希望一个线程在修改了对象状态后其他线程能够看到发生的状态变化。这就是说,为了确保多个线程之间对内存写入操作的可见性,必须使用同步机制。可见性,是针对处理器来说的,让处理器能过及时地看到变化。造成变量状态可见性失效,不可见的原因可能是我们没有使用同步块,其...原创 2018-06-01 22:36:33 · 294 阅读 · 0 评论