并发编程
文章平均质量分 96
seven97_top
欢迎到访在线网站:www.seven97.top
展开
-
volatile关键字最全原理剖析
volatile是轻量级的同步机制,volatile可以用来解决可见性和有序性问题,但不保证原子性。保证了不同线程对共享变量进行操作时的可见性,即一个线程修改了某个变量的值,这新值对其他线程来说是立即可见的。禁止进行指令重排序。原创 2024-09-28 19:41:42 · 718 阅读 · 0 评论 -
一篇文章讲清楚synchronized关键字的作用及原理
在应用Sychronized关键字时需要把握如下注意点:一把锁只能同时被一个线程获取,没有获得锁的线程只能等待;每个实例都对应有自己的一把锁(this),不同实例之间互不影响;例外:锁对象是*.class以及synchronized修饰的是static方法的时候,所有对象公用同一把锁synchronized修饰的方法,无论方法正常执行完毕还是抛出异常,都会释放锁。原创 2024-09-26 22:30:29 · 1528 阅读 · 0 评论 -
Java中到底有哪些锁
读锁是共享锁,写锁是独享锁。在代码进入同步块的时候,如果同步对象锁状态为无锁状态(锁标志位为“01”状态,是否为偏向锁为“0”),虚拟机首先将在当前线程的栈帧中建立一个名为锁记录(Lock Record)的空间,用于存储锁对象目前的Mark Word的拷贝,然后拷贝对象头中的Mark Word复制到锁记录中。如果轻量级锁的更新操作失败了,虚拟机首先会检查对象的Mark Word是否指向当前线程的栈帧,如果是就说明当前线程已经拥有了这个对象的锁,那就可以直接进入同步块继续执行,否则说明多个线程竞争锁。原创 2024-09-25 23:50:43 · 1166 阅读 · 0 评论 -
线程状态转换?创建线程的几种方式?线程如何停止?
线程状态转换新建(New)NEW:初始状态,线程被构建,但是还没有调用start()方法。可运行(Runnable)RUNNABLE:可运行状态,可运行状态可以包括:运行中状态和就绪状态。也就是 可能正在运行,也可能正在等待 CPU 时间片。包含了操作系统线程状态中的 Running 和 Ready。阻塞(Blocking)等待获取一个排它锁,如果其线程释放了锁就会结束此状态。new Thread(new BlockedDemo(),"Blocked-Demo-1").start();n原创 2024-09-24 23:23:23 · 1067 阅读 · 0 评论 -
一文夯实并发编程的理论基础
java内存模型(即 java Memory Model,简称JMM),不存在的东西,是一个概念,约定主要分成两部分来看,一部分叫做主内存,另一部分叫做工作内存。java当中的共享变量;都放在主内存当中,如类的成员变量(实例变量),还有静态的成员变量(类变量),都是存储在主内存中的。每一个线程都可以访问主内存;每一个线程都有其自己的工作内存,当线程要执行代码的时候,就必须在工作内存中完成。原创 2024-09-23 22:22:44 · 1055 阅读 · 0 评论