![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java并发
文章平均质量分 85
MrPeng1991
这个作者很懒,什么都没留下…
展开
-
wait/notify await/signal yield join
wait await wait/notify/nitifyAll Object中的方法,当线程调用wait()方法,当前线程释放对象锁,进入等待队列,只到被notify唤醒 await/signal/signalall java.util.concurrent类库中提供的Condition类来实现线程之间的协调 Thread.yield():一定是当前线程调用此方法,当前线程放弃获取CPU的时间片,由运行态转变为就绪态,让操作系统中再次选择线程执行。作用:让相同优先级的线程轮流执行,但并不能保证轮流执行原创 2024-03-23 19:50:12 · 215 阅读 · 0 评论 -
java-多线程
一个进程至少有一线线程,jvm启动时候会有一个进程,java.exe,还有一个垃圾回收机制的线程。 两种方式 extends thread implement Runnable 线程的集中状态 新建 new 就绪 start 运行 线程对象获得cpu资源 冻结 因为某些原因 比如 wait sleep,释放了执行资格和执行权, 死亡 run方法结束,或者stop,在内存中编程垃圾 synchronized 三个方法都需要在synchronized 语句中使用 wait notify原创 2020-07-27 19:16:11 · 164 阅读 · 0 评论 -
3.volatile域
有时仅仅为了读写一个或者两个实例域就使用同步的话,显得开销过大,volatile关键字为实例域的同步访问提供了免锁的机制。如果声明一个域为volatile,那么编译器和虚拟机就知道该域是可能被另一个线程并发更新的。再讲到volatile关键字之前我们需要了解一下内存模型的相关概念以及并发编程中的三个特性:原子性,可见性和有序性 1.内存模型 原子性 可见性 有序性 1.1 JMM 在 java 中,所有实例域、静态域和数组元素存储在堆内存中,堆内存在线程之间共享(本文使用“共享变量”这个术语代指实例域,原创 2022-05-19 16:12:05 · 141 阅读 · 0 评论 -
2. java并发编程-同步
文章目录1. 锁对象2. 条件对象3. Synchronized关键字4. 同步阻塞 http://liuwangshu.cn/java/concurrent/2-synchronous.html 在多线程的应用中,两个或者两个以上的线程需要共享对同一个数据的存取。如果两个线程存取相同的对象,并且每一个线程都调用了修改该对象的方法,这种情况通常成为竞争条件。比如买火车票 看看一个银行转账的例子 1. 锁对象 synchronized关键字自动提供了锁以及相关的条件,大多数需要显式锁的情况使用synchron原创 2022-05-19 15:59:47 · 147 阅读 · 0 评论 -
1. java并发编程-线程定义、状态和属性
基本用法参考 多线程 1. 进程和线程 线程 是指程序在执行过程中,能够执行程序代码的一个执行单元。在java语言中,线程有四种状态:运行 、就绪、挂起和结束。 进程 是指一段正在执行的程序。而线程有时也被成为轻量级的进程,他是程序执行的最小单元,一个进程可以拥有多个线程,各个线程之间共享程序的内功空间(代码段、数据段和堆空间)及一些进程级的资源(例如打开的文件),但是各个线程都拥有自己的棧空间。 为何使用多线程? 从操作系统角度看主要一下几个方面: 使用多线程可以减少程序的响应时间,如果某个操原创 2022-05-19 15:54:27 · 151 阅读 · 0 评论