随笔分类 -  java并发

摘要:在前面一篇文章中提到,对Vector、ArrayList在迭代的时候如果同时对其进行修改就会抛出java.util.ConcurrentModificationException异常。下面我们就来讨论以下这个异常出现的原因以及解决办法。 一、ConcurrentModificationExcepti 阅读全文
posted @ 2019-04-14 10:45 Uarealoser 阅读(314) 评论(0) 推荐(0)
摘要:一、为什么会出现同步容器 Java的集合框架中,主要有四大类别:List,Set,Queue,Map List,Set,Queue接口分别继承了Collection接口,Map本身是一个接口。 注意Collection,Map是一个顶层接口,而List,Set,Queue则继承了Collection 阅读全文
posted @ 2019-04-13 15:49 Uarealoser 阅读(531) 评论(0) 推荐(0)
摘要:一、对ThreadLocal的理解 ThreadLocal 线程本地变量,ThreadLocal为变量在每个线程都创建了一个副本,那么这个线程可以访问自己内部的副本变量。这句话其实不那么容易理解。 假设有这样一个数据库链接管理类,这段代码在单线程中使用是没有任何问题的,但是如果在多线程中使用呢?很显 阅读全文
posted @ 2019-04-13 14:58 Uarealoser 阅读(193) 评论(0) 推荐(0)
摘要:一、内存模型的相关概念 大家都知道,计算机在执行程序时,每条指令都是在CPU中执行的,而执行指令过程中,势必涉及到数据的读取和写入。由于程序运行过程中的临时数据是存放在主存(物理内存)当中的,这时就存在一个问题,由于CPU执行速度很快,而从内存读取数据和向内存写入数据的过程跟CPU执行指令的速度比起 阅读全文
posted @ 2019-04-12 21:12 Uarealoser 阅读(109) 评论(0) 推荐(0)
摘要:一.synchronized的缺陷 synchronized是java中的一个关键字,也就是说是Java语言内置的特性。那么为什么会出现Lock呢? 在上面一篇文章中,我们了解到如果一个代码块被synchronized修饰了,当一个线程获取了对应的锁,并执行该代码块时,其他线程便只能一直等待,等待获 阅读全文
posted @ 2019-04-12 20:44 Uarealoser 阅读(282) 评论(0) 推荐(0)
摘要:一、什么时候出现线程安全问题 在单线程中不会出现线程安全问题,而在多线程编程中,有可能会出现同时访问同一个资源的情况,这种资源可以是各种类型的的资源:一个变量、一个对象、一个文件、一个数据库表等,而当多个线程同时访问同一个资源的时候,就会存在一个问题: 由于每个线程执行的过程是不可控的,所以很可能导 阅读全文
posted @ 2019-04-12 19:49 Uarealoser 阅读(109) 评论(0) 推荐(0)
摘要:一、线程的几种状态 线程从创建到最终的消亡,要经历若干个状态。一般来说,线程包括以下这几个状态:创建(new)、就绪(runnable)、运行(running)、阻塞(blocked)、time waiting、waiting、消亡(dead)。 当需要新起一个线程来执行某个子任务时,就创建了一个线 阅读全文
posted @ 2019-04-12 19:39 Uarealoser 阅读(240) 评论(0) 推荐(0)
摘要:一、创建线程 1.使用Executor:java.util.concurrent包中的执行器(Execute)为你管理Thread对象,从而简化并发编程。 其中,shutdown方法的调用,是防止新任务被提交给这个Executor,当前线程(这里指main线程),将继续运行在shutdown被调用之 阅读全文
posted @ 2019-04-04 14:25 Uarealoser 阅读(125) 评论(0) 推荐(0)
摘要:ThreadLocal 允许将每个线程与持有数值的对象关联在一起,提供get,set访问器,为每个使用它的线程维持一份单独的拷贝。所以,get总是返回由当前执行线程通过set设置的最新值。 例通过ThreadLocal存储jdbc数据库连接使其成为线程安全的。 线程首次调用ThreadLocal.g 阅读全文
posted @ 2019-03-25 16:44 Uarealoser 阅读(96) 评论(0) 推荐(0)