随笔分类 -  并发编程

摘要:编写多线程程序是为了实现多任务的并发执行,从而能够更好地与用户交互。一般有三种方法,Thread,Runnable,Callable. Runnable和Callable的区别是,(1)Callable规定的方法是call(),Runnable规定的方法是run().(2)Callable的任务执行 阅读全文
posted @ 2018-07-06 16:58 开拖拉机的蜡笔小新 阅读(283) 评论(0) 推荐(0) 编辑
摘要:1. 首先说一下:行锁 和 表锁 1. 首先说一下:行锁 和 表锁 1. 首先说一下:行锁 和 表锁 主要是针对锁粒度划分的。 一般分为:行锁、表锁、库锁 (1)行锁:访问数据库的时候,锁定整个行数据,防止并发错误。 (2)表锁:访问数据库的时候,锁定整个表数据,防止并发错误。 行锁 和 表锁 的区 阅读全文
posted @ 2018-07-06 16:06 开拖拉机的蜡笔小新 阅读(332) 评论(0) 推荐(0) 编辑
摘要:AQS是J.U.C的核心 AQS(AbstractQueuedSynchronizer)队列同步器,AQS是JDK下提供的一套用于实现基于FIFO等待队列的阻塞锁和相关的同步器的一个同步框架。 同步器面向的是锁的实现者,它简化了锁的实现方式,屏蔽了同步状态管理、线程的排队、等待和唤醒等底层操作。 同 阅读全文
posted @ 2018-07-06 16:05 开拖拉机的蜡笔小新 阅读(368) 评论(0) 推荐(1) 编辑
摘要:同步容器 同步容器可以简单地理解为通过synchronized来实现同步的容器,如果有多个线程调用同步容器的方法,它们将会串行执行。 同步容器将它们的状态封装起来,并对每一个公有方法进行同步。主要包括: Vector Stack HashTable Collections.synchronized方 阅读全文
posted @ 2018-07-05 17:27 开拖拉机的蜡笔小新 阅读(460) 评论(0) 推荐(0) 编辑
摘要:1.StringBuilder 线程不安全,StringBuffer线程安全原因:StringBuffer几乎所有的方法都加了synchronized关键字 package com.mmall.concurrency.example.commonUnsafe; import com.mmall.co 阅读全文
posted @ 2018-07-05 16:09 开拖拉机的蜡笔小新 阅读(485) 评论(0) 推荐(0) 编辑
摘要:当我们在多线程程序中操作一个数据时,保证此数据的线程安全是必须的。一般的,我们会将与此数据相关的操作同步化,在处理此数据附近创建临界区,通过类似串行的方式让多线程按序访问保证安全。除了这种同步的方法,还有其他的方法可以保证数据的安全性。 保证数据线程安全的思路基本有以下三种,这三种中又分别有不同的做 阅读全文
posted @ 2018-07-05 15:35 开拖拉机的蜡笔小新 阅读(267) 评论(0) 推荐(0) 编辑
摘要:不可变类:所谓的不可变类是指这个类的实例一旦创建完成后,就不能改变其成员变量值。如JDK内部自带的很多不可变类:Interger、Long和String等。 可变类:相对于不可变类,可变类创建实例后可以改变其成员变量值,开发中创建的大部分类都属于可变类。 不可变类的优点: 1.线程安全 不可变对象是 阅读全文
posted @ 2018-07-05 15:30 开拖拉机的蜡笔小新 阅读(394) 评论(0) 推荐(0) 编辑
摘要:发布对象 发布对象:使一个对象能够被当前范围之外的代码所使用 对象溢出:一种错误的发布,当一个对象还没有构造完成时,就使它被其他线程所见 不正确的发布可变对象导致的两种错误: 1.发布线程意外的所有线程都可以看到被发布对象的过期的值 2.线程看到的被发布对象的引用是最新的,然而被发布对象的状态却是过 阅读全文
posted @ 2018-07-05 11:22 开拖拉机的蜡笔小新 阅读(343) 评论(0) 推荐(0) 编辑
摘要:在并发编程中,需要处理的两个关键问题:线程之间如何通信以及线程之间如何同步。 通信是指线程之间以或者机制交换信息,java的并发采用的是共享内存模型,线程之间共享程序的公共状态,通过读写内存中的公共状态进行隐式通信。 同步是是指程序中用于控制不同线程间操作发生相对顺序的机制。 最开始首先应该知道计算 阅读全文
posted @ 2018-07-01 14:58 开拖拉机的蜡笔小新 阅读(3373) 评论(2) 推荐(1) 编辑
摘要:首先要认识并发的一些基本概念以及并发编程的利和弊 并发编程2:认识并发编程的利与弊 基础知识讲解与核心知识准备 并发及并发的线程安全处理 高并发处理的思路及手段 涉及的知识技能 并发编程基础 CPU多级缓存-缓存一致性 CPU多级缓存-乱序执行优化 JAVA内存模型 并发的优势与风险 参考:Java 阅读全文
posted @ 2018-07-01 14:55 开拖拉机的蜡笔小新 阅读(497) 评论(0) 推荐(0) 编辑
摘要:通常情况下,在Java里面,++i或者--i不是线程安全的,这里面有三个独立的操作:获得变量当前值,为该值+1/-1,然后写回新的值。在没有额外资源可以利用的情况下,只能使用加锁才能保证读-改-写这三个操作是“原子性”的。 Java 5新增了Atomic包,里面类包含方法getAndIncremen 阅读全文
posted @ 2018-07-01 10:27 开拖拉机的蜡笔小新 阅读(386) 评论(0) 推荐(0) 编辑
摘要:通常在项目中,用户登录后,我们会将用户的信息存到session,如果想在其它地方获取session中的用户信息,我们需要先获取HttpServletRequest,再通过request.getSession得到HttpSession。 但是这样操作会很麻烦,每次要获取session都要传递Reque 阅读全文
posted @ 2018-03-08 15:22 开拖拉机的蜡笔小新 阅读(1661) 评论(0) 推荐(0) 编辑
摘要:线程间的通信:多个线程在处理同一资源,但是任务却不同。一、等待唤醒机制涉及的方法:1.wait();让线程处于冻结状态,被wait的线程会被存储到线程池中2.notify();唤醒线程池中的一个任意线程3.notifyAll();唤醒线程池中的所有线程这些方法都必须定义在同步中,因为这些方法是用于操 阅读全文
posted @ 2016-10-14 22:11 开拖拉机的蜡笔小新 阅读(998) 评论(1) 推荐(0) 编辑