Java多线程
包含Java多线程相关知识点
小朋友/?
你好呀~
展开
-
Java多线程 -- "volatile禁止指令重排序"详解
volatile关键字: 保证"有序性, 可见性"synchronized关键字: 保证"原子性, 可见性"问题1: synchronized为什么在第一次判断条件外加锁? 不在第一次判断变量是否为空时就加锁? 不需要在最外层进行第一次变量是否为空的判断时就加锁, synchronized在第二次判断条件那里加锁, 原因是会引起 " 锁竞争 " ,锁竞争现象会影响效...原创 2020-02-22 22:45:25 · 1006 阅读 · 4 评论 -
Java多线程 -- 懒汉模式和饿汉模式
1、饿汉式是线程安全的,在类创建的同时就已经创建好一个静态的对象供系统使用,以后不在改变。懒汉式如果在创建实例对象时不加上synchronized则会导致对对象的访问不是线程安全的。2、从实现方式来讲他们最大的区别就是懒汉式是延时加载,他是在需要的时候才创建对象,而饿汉式在虚拟机启动的时候就会创建,饿汉式无需关注多线程问题,写法简单明了,能用则用。真正用到的时候才去建这个单例对象,“饿汉式”是在...原创 2020-02-11 21:58:50 · 655 阅读 · 0 评论 -
Java多线程 -- volatile和synchronized关键字
对于Java多线程安全的三大特性: 原子性, 可见性, 有序性1. volatile关键字: 保证 "有序性, 可见性" 不能用来同步, 因此多线程访问volatile变量不会造成线程的阻塞 volatile不具有原子性, 不能保证线程的安全性 volatile 是轻量级的, 只能修饰变量 volatile作用: 1. 有序性, 体现在"禁...原创 2020-02-11 21:47:29 · 137 阅读 · 0 评论 -
Java多线程 -- 单例模式
单例模式顾名思义就是"只有一个类, 有且只有一个实例",因此单例模式的类的构造方法是被private修饰的,因此外界无法通过new创建该类的对象,类对外提供一个共有方法,其作用是无论调用者是谁返回的只有一个对象1.写一个单例模式(这是懒汉模式)"懒汉模式" 意思就是知道有人调用了才创建对象,不用的话就不创建, 线程不安全"饿汉模式" 就是在定义时就初始化了,不管有没有被调用它的...原创 2020-02-11 21:48:57 · 125 阅读 · 0 评论 -
Java多线程 -- "死锁"相关总结
死锁是指两个或者两个以上的线程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,他们都将无法推进下去。此时称系统处于死锁状态或者系统产生了死锁。这些永远在互相等待的进程称为死锁进程。产生死锁的原因主要是:(1) 因为系统资源不足。(2) 进程运行推进的顺序不合适。(3) 资源分配不当等。如果系统资源充足,进程的资源请求都能够得到满足,死锁出现的可能...原创 2020-01-30 19:12:27 · 105 阅读 · 0 评论