![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
并发编程
文章平均质量分 80
不会-
博客仅供个人学习使用
展开
-
JMM volatile
2.2. 讲一下 JMM(Java 内存模型)在 JDK1.2 之前,Java 的内存模型实现总是从主存(即共享内存)读取变量,是不需要进行特别的注意的。而在当前的 Java 内存模型下,线程可以把变量保存本地内存(比如机器的寄存器)中,而不是直接在主存中进行读写。这就可能造成一个线程在主存中修改了一个变量的值,而另外一个线程还继续使用它在寄存器中的变量值的拷贝,造成数据的不一致。要解决这个问题,就需要把变量声明为volatile,这就指示 JVM,这个变量是共享且不稳定的,每次使用它都到主..原创 2021-12-26 16:49:17 · 75 阅读 · 0 评论 -
线程同步与Lock锁
一、为什么要有lock锁Lock的出现可以解决Synchronized在某些场景中的短板,它比Synchronized更加灵活。 原因一:Sychronized是不可中断的,如果这个获取锁的线程由于要等待IO或者其他原因(比如调用sleep方法)被阻塞了,但是又没有释放锁,其他线程只能等待(解决方案:设定时间tryLock(long time, TimeUnit unit))或者 能够响应中断(解决方案:lockInterruptibly()) 原因二:Sychronized是排他锁,...原创 2021-10-22 15:43:55 · 158 阅读 · 0 评论 -
线程和线程池
一、线程和进程的区别线程,程序执行流的最小执行单位,是行程中的实际运作单位,一个应用程序的运行就可以被看做是一个进程,而线程就是应用程序中的一个任务。线程的三种创建方法 extends Thread类 实现Runnable方法 实现callable方法 有返回值 二、线程的生命周期线程的生命周期,线程的生命周期可以利用以下的图解来更好的理解:第一步,是用new Thread()的方法新建一个线程,在线程创建完成之后,线程就进入了就绪(Runnab原创 2021-10-18 09:03:58 · 74 阅读 · 0 评论 -
线程同步与synchronized锁
Java并发编程:synchronized - Matrix海子 - 博客园Java并发编程:Lock - Matrix海子 - 博客园 Java并发编程:synchronized虽然多线程编程极大地提高了效率,但是也会带来一定的隐患。今天我们就来一起讨论下线程安全问题,以及Java中提供了什么机制来解决线程安全问题。一.什么时候会出现线程安全问题?二.如何解决线程安全问题? 那么一般来说,是如何解决线程安全问题的呢? 基本上所有的并发模式在解决线程安全问题时,都采用“序列化原创 2021-10-20 11:55:19 · 132 阅读 · 0 评论