lotus

贵有恒何必三更眠五更起 最无益只怕一日曝十日寒

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
  1846 随笔 :: 0 文章 :: 109 评论 :: 288万 阅读

随笔分类 -  并发编程

摘要:原文链接: http://www.cnblogs.com/dolphin0520/p/3932921.html 在前面的文章中,我们使用线程的时候就去创建一个线程,这样实现起来非常简便,但是就会有一个问题: 如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了,这样频繁创建线程就会 阅读全文
posted @ 2018-05-24 09:59 白露~ 阅读(279) 评论(0) 推荐(0) 编辑

摘要:原文链接: http://www.cnblogs.com/dolphin0520/p/3932906.html 在前面几篇文章中,我们讨论了同步容器(Hashtable、Vector),也讨论了并发容器(ConcurrentHashMap、CopyOnWriteArrayList),这些工具都为我们 阅读全文
posted @ 2018-05-24 09:27 白露~ 阅读(313) 评论(0) 推荐(0) 编辑

摘要:原文链接: http://ifeve.com/java-copy-on-write/ Copy-On-Write简称COW,是一种用于程序设计中的优化策略。其基本思路是,从一开始大家都在共享同一个内容,当某个人想要修改这个内容的时候,才会真正把内容Copy出去形成一个新的内容然后再改,这是一种延时懒 阅读全文
posted @ 2018-05-24 09:12 白露~ 阅读(202) 评论(0) 推荐(0) 编辑

摘要:下面这部分内容转载自: http://www.haogongju.net/art/2350374 JDK5中添加了新的concurrent包,相对同步容器而言,并发容器通过一些机制改进了并发性能。因为同步容器将所有对容器状态的访问都 串行化了,这样保证了线程的安全性,所以这种方法的代价就是严重降低了 阅读全文
posted @ 2018-05-23 17:51 白露~ 阅读(258) 评论(0) 推荐(0) 编辑

摘要:在前面一篇文章中提到,对Vector、ArrayList在迭代的时候如果同时对其进行修改就会抛出java.util.ConcurrentModificationException异常。下面我们就来讨论以下这个异常出现的原因以及解决办法。 以下是本文目录大纲: 一.ConcurrentModifica 阅读全文
posted @ 2018-05-23 17:28 白露~ 阅读(312) 评论(0) 推荐(0) 编辑

摘要:为了方便编写出线程安全的程序,Java里面提供了一些线程安全类和并发工具,比如:同步容器、并发容器、阻塞队列、Synchronizer(比如CountDownLatch)。今天我们就来讨论下同步容器。 以下是本文的目录大纲: 一.为什么会出现同步容器? 二.Java中的同步容器类 三.同步容器的缺陷 阅读全文
posted @ 2018-05-23 16:43 白露~ 阅读(153) 评论(0) 推荐(0) 编辑

摘要:想必很多朋友对ThreadLocal并不陌生,今天我们就来一起探讨下ThreadLocal的使用方法和实现原理。首先,本文先谈一下对ThreadLocal的理解,然后根据ThreadLocal类的源码分析了其实现原理和使用需要注意的地方,最后给出了两个应用场景。 以下是本文目录大纲: 一.对Thre 阅读全文
posted @ 2018-05-23 16:29 白露~ 阅读(162) 评论(0) 推荐(0) 编辑

摘要:volatile这个关键字可能很多朋友都听说过,或许也都用过。在Java 5之前,它是一个备受争议的关键字,因为在程序中使用它往往会导致出人意料的结果。在Java 5之后,volatile关键字才得以重获生机。 volatile关键字虽然从字面上理解起来比较简单,但是要用好不是一件容易的事情。由于v 阅读全文
posted @ 2018-05-23 14:35 白露~ 阅读(156) 评论(0) 推荐(0) 编辑

摘要:在前面2篇文章分别讲到了线程和进程的由来、以及如何在Java中怎么创建线程和进程。今天我们来学习一下Thread类,在学习Thread类之前,先介绍与线程相关知识:线程的几种状态、上下文切换,然后接着介绍Thread类中的方法的具体使用。 以下是本文的目录大纲: 一.线程的状态 二.上下文切换 三. 阅读全文
posted @ 2018-05-23 14:33 白露~ 阅读(209) 评论(0) 推荐(0) 编辑

摘要:虽然多线程编程极大地提高了效率,但是也会带来一定的隐患。比如说两个线程同时往一个数据库表中插入不重复的数据,就可能会导致数据库中插入了相同的数据。今天我们就来一起讨论下线程安全问题,以及Java中提供了什么机制来解决线程安全问题。 以下是本文的目录大纲: 一.什么时候会出现线程安全问题? 二.如何解 阅读全文
posted @ 2018-05-23 14:33 白露~ 阅读(152) 评论(0) 推荐(0) 编辑

摘要:在前面一篇文章中已经讲述了在进程和线程的由来,今天就来讲一下在Java中如何创建线程,让线程去执行一个子任务。下面先讲述一下Java中的应用程序和进程相关的概念知识,然后再阐述如何创建线程以及如何创建进程。下面是本文的目录大纲: 一.Java中关于应用程序和进程相关的概念 二.Java中如何创建线程 阅读全文
posted @ 2018-05-23 14:31 白露~ 阅读(148) 评论(0) 推荐(0) 编辑

摘要:Java多线程基础:进程和线程之由来 在前面,已经介绍了Java的基础知识,现在我们来讨论一点稍微难一点的问题:Java并发编程。当然,Java并发编程涉及到很多方面的内容,不是一朝一夕就能够融会贯通使用的,需要在实践中不断积累。由于并发肯定涉及到多线程,因此在进入并发编程主题之前,我们先来了解一下 阅读全文
posted @ 2018-05-23 14:30 白露~ 阅读(133) 评论(0) 推荐(0) 编辑

摘要:1. sleep 和 wait 方法解释 sleep()方法是Thread类里面的,主要的意义就是让当前线程停止执行,让出cpu给其他的线程,但是不会释放对象锁资源以及监控的状态,当指定的时间到了之后又会自动恢复运行状态。 wait()方法是Object类里面的,主要的意义就是让线程放弃当前的对象的 阅读全文
posted @ 2018-05-22 17:50 白露~ 阅读(272) 评论(0) 推荐(0) 编辑

摘要:java并发编程目录 参考内容 《深入浅出 Java Concurrency》 Java并发编程 moonandstar08 Java并发编程 moonandstar08 https://www.cnblogs.com/moonandstar08/p/5401147.html 阅读全文
posted @ 2018-05-22 17:43 白露~ 阅读(276) 评论(0) 推荐(0) 编辑

摘要:1. start 和 run 方法解释: 1) start: 用start方法来启动线程,真正实现了多线程运行,这时无需等待run方法体代码执行完毕而直接继续执行下面的代码。通过调用Thread类的start()方法来启动一个线程,这时此线程处于就绪(可运行)状态,并没有运行,一旦得到cpu时间片, 阅读全文
posted @ 2018-05-22 17:37 白露~ 阅读(962) 评论(0) 推荐(0) 编辑

摘要:虽然关于讨论线程join方法的博客已经很多了,不过个人感觉挺多都讨论得不够全面,所以我觉得有必要对其进行一个全面的总结。 一、作用 Thread类中的join方法的主要作用就是同步,它可以使得线程之间的并行执行变为串行执行。具体看代码: public class JoinTest { public 阅读全文
posted @ 2018-05-22 16:20 白露~ 阅读(438) 评论(0) 推荐(0) 编辑

摘要:转载: http://www.cnblogs.com/dolphin0520/category/602384.html 在前面2篇文章分别讲到了线程和进程的由来、以及如何在Java中怎么创建线程和进程。今天我们来学习一下Thread类,在学习Thread类之前,先介绍与线程相关知识:线程的几种状态、 阅读全文
posted @ 2018-05-22 14:49 白露~ 阅读(262) 评论(0) 推荐(0) 编辑

摘要:具体可参考:Java并发编程:Thread类的使用,这里对线程状态的转换及主要函数做一下补充。 一. 线程状态转换图 注意: 调用obj.wait()的线程需要先获取obj的monitor,wait()会释放obj的monitor并进入等待态。所以wait()/notify()都要与synchron 阅读全文
posted @ 2018-05-22 13:45 白露~ 阅读(1051) 评论(0) 推荐(0) 编辑

摘要:Java多线程实现方式主要有四种: 继承Thread类 实现Runnable接口、 实现Callable接口通过FutureTask包装器来创建Thread线程、 使用ExecutorService、Callable、Future实现有返回结果的多线程。 其中前两种方式线程执行完后都没有返回值,后两 阅读全文
posted @ 2018-05-22 13:31 白露~ 阅读(14631) 评论(0) 推荐(0) 编辑

摘要:当一个共享变量被volatile修饰时,它会保证修改的值立即被更新到主存“, 这里的”保证“ 是如何做到的?和 JIT的具体编译后的CPU指令相关吧? volatile特性 内存可见性:通俗来说就是,线程A对一个volatile变量的修改,对于其它线程来说是可见的,即线程每次获取volatile变量 阅读全文
posted @ 2018-05-21 13:58 白露~ 阅读(10648) 评论(1) 推荐(3) 编辑

点击右上角即可分享
微信分享提示