![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java多线程
火云咩哈哈
希望跟大家分享的同时我们一起进步!
展开
-
乐观锁与悲观锁——解决并发问题
引言 为什么需要锁(并发控制)? 在多用户环境中,在同一时间可能会有多个用户更新相同的记录,这会产生冲突。这就是著名的并发性问题。 典型的冲突有: 丢失更新:一个事务的更新覆盖了其它事务的更新结果,就是所谓的更新丢失。例如:用户A把值从6改为2,用户B把值从2改为6,则用户A丢失了他的更新。 脏读:当一个事务读取其它完成一半事务的记录时,就会发生脏读取。例如:用户A,B看转载 2017-04-01 11:46:39 · 2096 阅读 · 0 评论 -
java多线程轮流打印数据问题
题目是: 建立三个线程,A线程打印10次A,B线程打印10次B,C线程打印10次C,要求线程同时运行,交替打印10次ABC 理解: Obj.wait(),与Obj.notify()必须要与synchronized(Obj)一起使用,也就是wait,与notify是针对已经获取了Obj锁进行操作,从语法角度来说就是Obj.wait(),Obj.notify必须在synchro原创 2017-04-27 08:31:27 · 2986 阅读 · 1 评论 -
CountDownLatch的介绍和使用
1、类介绍 java.util.concurrent 类 CountDownLatch java.lang.Object java.util.concurrent.CountDownLatch 一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待。 用给定的计数 初始化 CountDownLatch。由于调用了 countDown()转载 2017-05-24 14:27:43 · 292 阅读 · 0 评论 -
Java多线程基础(二)
Java多线程理解 一、常用方法 1、join()方法,让一个线程等待另一个线程执行完之后再执行。例如:A线程执行体中执行B线程的join方法,那么需要等到B线程执行完毕之后再执行A线程。 示例: public class MyRunnable implements Runnable{ private boolean flag = false; @Override public原创 2017-05-10 22:39:04 · 349 阅读 · 0 评论 -
java多线程基础(一)
线程: 1、线程生命周期 2、线程的创建有两种方式 (1)继承Thread类: /* * 创建一个子线程,完成1-100之间自然数的输出。同样的,主线程执行同样的操作。 * 创建多线程的第一种方式:继承Thread类。 */ public class TestThread { public static void main(String[] args) { //3\原创 2016-12-10 18:06:23 · 422 阅读 · 0 评论 -
java多线程基础(三)
synchronized关键字 涉及到共享资源的读写访问,在同步时,往往会使用synchronized关键字,synchronized对象监视器既可以是对象,也可以是类。 1 synchronized应用于非静态方法 ① synchronized关键字修饰方法,取的锁是对象锁。当然这个对象锁只能是是方法所在类本身对象。多个线程访问某一对象中某synchronized同步方法时原创 2017-05-16 05:13:28 · 279 阅读 · 0 评论