线程并发
java圈
熟悉spring、springboot、springcloud、设计模式、ddd思想
展开
-
java内存模式-volatile
一、volatile写-读的内存语义定义:当写一个volatile变量时,JVM会把线程对应的本地内存中的共享变量值刷新至主内存volatile读的内存语义:当读一个volatile变量时,JVM会把该线程对应的本地内存置为无效,线程接下来将从主内存中读取共享变量总结:1、线程A写一个volatile变量,实质上是线程A向接下来要读volatile变量的某个线程发出消息2、线程B读一个volati...原创 2018-07-12 08:59:16 · 686 阅读 · 0 评论 -
java并发基础(一)——线程简介
1.1、什么是线程?操作系统调度的最小单元是线程,也叫轻量级进程,在一个进程里面可以创建多个线程,这些线程都拥有各自的计数器、堆栈、局部变量等属性,能够访问共享变量一个java程序从main()方法开始执行,执行的只一个main线程 package cn.sunline.demo.dem2;import java.lang.management.ManagementFacto...原创 2018-07-18 08:40:23 · 674 阅读 · 0 评论 -
Daemon线程
1、简介Daemon线程是一种支持类型的线程,因为它主要被用作程序中后台调度以及支持性工作,这意味着,当一个java虚拟机中不存在非Daemon线程的时候,JAVA虚拟机将会退出,可以通过调用Thread.setDaemon(true)将线程设置为Daemon线程注意:Daemon属性需要在启动线程之前设置,不能再线程启动之后设置2、使用Daemon线程被用作完成支持性工作,但是在...原创 2018-07-19 08:59:51 · 3703 阅读 · 0 评论 -
Lock接口
锁是用来控制多个线程访问共享资源的方式,一般来说,一个锁能够防止多个线程同时访问共享资源。在lock接口出现之前程序是靠synchronized关键字实现锁功能,lock接口提供了与synchronized关键字类似的同步功能,只是在使用的过程中需要显示的获取和释放锁。缺点:缺少隐士获取释放锁的便捷性有点:拥有锁获取与释放的可操作性,可中断的获取硕=锁以及超市获取锁等特性适合Lock的...原创 2018-07-25 09:04:02 · 1412 阅读 · 0 评论 -
volatile和synchronized关键字
java支持多个线程访问一个对象或者对象的成员变量,由于每个线程可以拥有这个变量的拷贝,所以在程序执行的过程中,一个线程看到的变量并不一定是最新的volatile:用来修饰成员变量,告知程序对成员变量的访问均需要从共享内存中获取,而对它 的改变必须同步刷新回共享内存,保证所有线程对变量访问的可见性synchronized:用于修饰方法或者同步块的形式使用,主要确保多个线程在同一时刻,只能有...原创 2018-07-20 08:58:47 · 1131 阅读 · 0 评论 -
为什么要使用ConcurrentHashMap
在线程并发中使用HashMap可能导致程序死循环。而使用线程安全的HashTable效率非常低1、线程不安全的HashMap在多线程,使用HaspMap就行put操作会引起死循环,导致cpu100%。所在在并发情况不能使用HashMappackage com.demo.demo4;import java.util.HashMap;import java.util.UUID;...原创 2018-07-26 09:01:36 · 2628 阅读 · 1 评论 -
线程等待通知机制
等待通知机制,是指一个线程A调用了对象O的wait方法进入等待状态,而另一个线程调用了对象O的notify或者notifyAll方法,线程A收到通知后从对象O的wait方法返回,进而执行后续操作方法名称 描述 notify() 通知一个在对象上对待的线程,使其从wait方法返回,而返回的前提是该线程获取到了对象的锁 notifyAll() 通知所有等待在该对象上的线程...原创 2018-07-23 09:06:01 · 1276 阅读 · 0 评论