
多线程
文章平均质量分 74
wive
执着的追梦
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
mysql处理高并发,防止库存超卖
转自:http://blog.youkuaiyun.com/caomiao2006/article/details/38568825今天王总又给我们上了一课,其实mysql处理高并发,防止库存超卖的问题,在去年的时候,王总已经提过;但是很可惜,即使当时大家都听懂了,但是在现实开发中,还是没这方面的意识。今天就我的一些理解,整理一下这个问题,并希望以后这样的课程能多点。先来就库存超卖的问题作描述:一般电子商务网...转载 2015-01-28 14:51:14 · 831 阅读 · 0 评论 -
线程之间通讯--wait和notify
使用wait / notify方法实现线程间的通信。(注意这两个方法都是object的类的方法,换句话说java为所有的对象都提供了这两个方法)1 wait 和 notify 必须配合synchronized 关键字使用2wait方法释放锁,notify方法不释放锁。package com.bjsxt.base.conn008;import java.util.ArrayList;impor...原创 2018-03-02 14:59:16 · 294 阅读 · 0 评论 -
ThreadLocal
threadLocal的作用:ThreadLocal概念:线程局部变量,是一种多线程间并发访问变量的解决方案。与其synchronized等加锁的方式不同,ThreadLocal完全不提供锁,而使用以空间换时间的手段,为每个线程提供变量的独立副本,以保障线程安全。从性能上说,ThreadLocal不具有绝对的优势,在并发不是很高的时候,加锁的性能会更好,但作为一套与锁完全无关的线程安全解决方案,在...原创 2018-03-02 14:59:01 · 2942 阅读 · 1 评论 -
并发类容器
一、传统同步容器的缺陷:同步类容器:如古老的Vector、HashTable。这些容器的同步功能其实都是有JDK的Collections.synchronized***等工厂方法去创建实现的。其底层的机制无非就是用传统的synchronized关键字对每个公用的方法都进行同步,使得每次只能有一个线程访问容器的状态。因而状态都是串行化的。他们虽然实现了线程安全,但是严重降低了并发性,在多线程环境时,...原创 2018-03-02 14:58:28 · 375 阅读 · 0 评论 -
经典多线程设计模式(重要)
一、Future模式思想:当service(Main方法模拟)请求一个数据的时候,可以先给他返回一个包装类(空壳,代理对象,未来data,FutureData)然后开一个线程去异步加载真实数据,这样当service收到FutrueData,就可以做其他业务逻辑,当要用的时候,再从FutureData中的方法去加载真实数据。(类似ajax的思想)启动程序:模拟一个请求/** * 模拟一个servi...原创 2018-03-02 14:57:53 · 3845 阅读 · 1 评论 -
Executor框架
Executor框架:为了更好的控制多线程,JDK提供了一套线程框架Executor,帮助开发人员有效地进行线程控制。它们都在java.util.concurrent包中,是JDK并发包的核心。其中有一个比较重要的类:Executors,他扮演这线程工厂的角色,我们通过Executors可以创建特定功能的线程池。Executors创建线程池方法:newFixedThreadPool(count)方...原创 2018-03-02 14:57:21 · 338 阅读 · 0 评论 -
CountDownLatch、CyclicBarrier、Semaphore
CountDownLacth(倒计时闩):个人理解:使用同一个CountDownLacth的多个线程,可以使用CountDownLacth提供的await方法,实现阻塞等待,需要其他线程调用CountDownLacth提供的countDown方法来唤醒它,CountDownLacth有构造函数,如果传入2,那么就要两个其他线程调用countDown方法来唤醒它。场景:经常用于监听某些初始化操作,等...原创 2018-03-02 14:57:09 · 412 阅读 · 0 评论 -
锁机制
概述:在java多线程中,有synchronized关键字来实现线程间的同步互斥工作,那么其实还有一个更优秀的机制去完成这个“同步互斥”工作,他就是Lock对象,用得最多的是重入锁ReentrantLock和读写锁ReentrantReadWriteLock。他们具有比synchronized更为强大的功能,并且有嗅探锁定、多路分支等功能。重入锁ReentrantLock:在需要进行同步的代码部分...原创 2018-03-02 14:56:58 · 2034 阅读 · 0 评论 -
Java transient Volatile关键字
转自:http://www.blogjava.net/fhtdy2004/archive/2009/06/20/286112.htmlVolatile修饰的成员变量在每次被线程访问时,都强迫从主内存中重读该成员变量的值。而且,当成员变量发生变化时,强迫线程将变化值回写到主内存。这样在任何时刻,两个不同的线程总是看到某个成员变量的同一个值。 Java语言规范中指出:为了获得最佳速度,允许线程...转载 2015-10-16 11:09:14 · 417 阅读 · 0 评论 -
Synchronized关键字总结 / ACID
线程安全概念:当多个线程访问某一个类(对象或方法)时,这个类始终都能表现出正确的行为,那么这个类(对象或方法)就是线程安全的。synchronized:可以在任意对象及方法上加锁,而加锁的这段代码称为"互斥区"或"临界区"执行步骤:当多线程访问一个对象的run方法时,会以排队的方式进行处理(这里的排队是按照CPU分配的先后顺序而定的,不是代码执行顺序)一个线程想要执行synchronized修饰的...原创 2017-03-05 16:23:54 · 429 阅读 · 0 评论 -
volatile关键字
volatile概念:volatile关键字的主要作用是使变量在多个线程间可见。volatile的作用:就是强制线程到主内存(共享内存)里去读取变量,而不去线程工作内存区里去读取,从而实现了多个线程间的变量可见。也就是满足线程安全的可见性。理解:在java中,每一个线程都会有一块工作内存区,其中存放着所有线程共享的主内存中的变量值的拷贝。当线程执行时,他在自己的工作内存区中操作这些变量。为了存取一...原创 2017-03-05 17:53:22 · 556 阅读 · 0 评论 -
多线程异步执行
有时候,我们程序中需要执行一些对返回结果无影响的操作,或者耗时比较长的操作,如果这时我们直接将这些操作放在接口中执行,将会对返回结果的及时性产生较大的影响,或者我们有时需要过一定的时间间隔再执行这项任务,这时我们可以考虑在程序中专门运行几个线程去异步执行这些方法。如果常用的,保存用户登录记录、用户登录、注册时进行的奖励操作(eg.加积分)、注册延迟多少秒发奖励、写金币积分的转移记录等这种需求可能存...原创 2018-03-02 15:22:45 · 4700 阅读 · 0 评论