基本概念: synchronized上加static和不加的区别就是有static是类锁,不加就是对象锁。 线程安全:当多个线程访问某一个类(对象或方法)时,这个类始终能表现出正确的行为,那么这个类就是一个线程安全的。 synchronized:可以在任何对象及方法上加锁,而加锁的这段代码称为"互斥 ...
分类:
其他好文 时间:
2018-08-18 13:12:05
阅读次数:
185
什么是多线程? 多线程(英语:multithreading),是指从软件或者硬件上实现多个线程并发执行的技术。具有多线程能力的计算机因有硬件支持而能够在同一时间执行多于一个线程,进而提升整体处理性能。具有这种能力的系统包括对称多处理机、多核心处理器以及芯片级多处理(Chip-level multit ...
分类:
编程语言 时间:
2018-08-14 11:33:54
阅读次数:
156
锁粗化 虚拟机遇到一连串连续的对同一锁不断的进行请求和释放的操作,把所有的锁操作整合成对锁的一次请求 锁偏向 轻量级锁 子旋锁 锁消除 ...
分类:
其他好文 时间:
2018-08-12 12:16:04
阅读次数:
126
java在编写多线程程序时,为了保证线程安全,需要对数据同步,经常用到两种同步方式就是Synchronized和重入锁ReentrantLock。 相似点: 这两种同步方式有很多相似之处,它们都是加锁方式同步,而且都是阻塞式的同步,也就是说当如果一个线程获得了对象锁,进入了同步块,其他访问该同步块的 ...
分类:
编程语言 时间:
2018-08-09 00:30:44
阅读次数:
152
一、线程的状态 在正式学习Thread类中的具体方法之前,我们先来了解一下线程有哪些状态,这个将会有助于后面对Thread类中的方法的理解。 线程从创建到最终的消亡,要经历若干个状态。一般来说,线程包括以下这几个状态:创建(new)、就绪(runnable)、运行(running)、阻塞(block ...
分类:
编程语言 时间:
2018-08-09 00:30:32
阅读次数:
168
1.概念 synchronized 是 Java 中的关键字,是利用锁的机制来实现同步的。 锁机制有如下两种特性: 互斥性:即在同一时间只允许一个线程持有某个对象锁,通过这种特性来实现多线程中的协调机制,这样在同一时间只有一个线程对需同步的代码块(复合操作)进行访问。互斥性我们也往往称为操作的原子性 ...
分类:
其他好文 时间:
2018-08-01 18:15:46
阅读次数:
171
Object.wait 中JDK提供的doc文档 一个对象的monitor只能被一个线程占用,wait()方法会释放这个对象的锁, 既然要释放 就先要取得这个锁, 取得对象锁的方式只有synchronized()。释放锁之后, 线程进入BLOCK状态 doc文档中说明调用wait的时机是因为运行条件 ...
分类:
其他好文 时间:
2018-07-21 14:42:52
阅读次数:
197
Java每个对象都有一把锁,当前进程使用对象锁1,没有释放该锁,又想要去获取另一把对象锁2,而对象锁2被另外一个线程持有,没有释放,这就很容易出现死锁 1.死锁实例 分析:线程1持有object1的锁,同时又想去获取object2的锁,而此时线程2又持有object2的锁没有释放,又想去获取obje ...
分类:
编程语言 时间:
2018-07-16 00:31:23
阅读次数:
1358
说到并发编程,感觉跟大多数人一样,谈之色变,说它简单把,其实很有内容,说难吧,用起来也挺容易,最近我硬着头皮,决心要把并发编程好好的搞一遍。以前,面试的时候,面试官问,并发编程会吗?嗯,接触过,就加一个synchronized关键字就好了,面试官微笑着说,嗯好。特喵的现在感觉来说,这俩low逼。本来 ...
分类:
其他好文 时间:
2018-07-02 00:04:21
阅读次数:
143
1. java 中 wait()与sleep() 区别:答:两者都是暂停当前运行的线程。sleep()是Thread类的方法;wait()是Object类的方法 。调用sleep(),线程不会释放对象锁,其他线程依然无法访问这个对象;调用wait(),线程会释放对象锁,其他线程能访问这个对象。 2. ...
分类:
编程语言 时间:
2018-07-01 10:31:40
阅读次数:
175