1、自旋锁自旋锁可以使线程在没有取得锁的时候,不被挂起,而转去执行一个空循环,(即所谓的自旋,就是自己执行空循环),若在若干个空循环后,线程如果可以获得锁,则继续执行。若线程依然不能获得锁,才会被挂起。使用自旋锁后,线程被挂起的几率相对减少,线程执行的连贯性相对加强。因此,对于那些锁竞争不是很激烈, ...
分类:
其他好文 时间:
2018-09-29 23:59:55
阅读次数:
334
一、线程基本状态 新建:线程已创建但start()方法还没执行 就绪(可运行):start()方法已运行,但还没被选择 运行:从就绪线程中选择出某一个线程进行run()操作 阻塞(不可运行):线程正在运行,但是由于某种原因(wait(),sleep(),join(),IO请求,获取别的对象锁)该线程 ...
分类:
编程语言 时间:
2018-09-18 17:20:36
阅读次数:
179
synchronized(this)是对象锁,如果有多个对象就有相对应的多个锁。synchronized(类的名.class)是全局锁,不管有几个对象就公用一把锁。 方法内的同步代码块: synchronized (this){...修饰对象,如果有多个对象就有相对应的多个锁。 synchroniz ...
分类:
其他好文 时间:
2018-09-18 16:05:47
阅读次数:
1293
一、什么是线程? 线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位。程序员可以通过它进行多处理器编程,你可以使用多线程对运算密集型任务提速。比如,如果一个线程完成一个任务要100毫秒,那么用十个线程完成改任务只需10毫秒。 二、线程和进程有什么区别? 线程是进程的 ...
分类:
编程语言 时间:
2018-09-13 20:20:04
阅读次数:
217
java并发编程中最长用到的关键字就是synchronized了,这里讲解一下这个关键字的用法和容易混淆的地方.synchronized关键字涉及到锁的概念, 在java中,synchronized锁大家又通俗的称为:方法锁,对象锁 和 类锁 三种. 先上结论! 1 无论是修饰方法还是修饰代码块都是 ...
分类:
其他好文 时间:
2018-09-13 14:28:31
阅读次数:
193
synchronized用于三个地方。 修饰普通方法,那么线程需要获取对象锁。 修饰静态方法,那么线程需要获取类锁,其实就是Class对象。类锁和对象锁之间互不干扰。 修改代码块,也要获取对象锁。 用于代码块的时候对应monitorenter指令和monitorexit指令,表示需要获取monito ...
分类:
编程语言 时间:
2018-08-28 11:27:14
阅读次数:
138
synchronized(this) 和synchronized一样,都是锁定当前对象。 ...
分类:
编程语言 时间:
2018-08-25 17:25:34
阅读次数:
168
1、自旋锁,自旋,jvm默认是10次,由jvm自己控制,for去争取锁 2、阻塞锁 被阻塞的线程,不会争夺锁 3、可重入锁,多次进入改锁的域 4、读写锁 5、互斥锁,锁本身就是互斥的 6、悲观锁,不相信这里是安全的,必须全部上锁 7、乐观锁,相信这里是安全的 8、公平锁,有优先级的锁 9、非公平锁, ...
分类:
编程语言 时间:
2018-08-23 19:20:00
阅读次数:
286
image 众所周知 Synchronize 关键字是解决并发问题常用解决方案,有以下三种使用方式: 同步普通方法,锁的是当前对象。 同步静态方法,锁的是当前 Class 对象。 同步块,锁的是 {} 中的对象。 实现原理: JVM 是通过进入、退出对象监视器( Monitor )来实现对方法、同步 ...
分类:
编程语言 时间:
2018-08-20 21:39:44
阅读次数:
174
进程 一个计算机程序的运行实例,包含了需要执行的指令: 有自己独立的空间,包含程序内容和数据; 不同进程的地址空间是互相隔离的; 进程拥有各种资源和状态信息,包含打开的文件,子进程和信号处理; 进程使用类:java.lang.Process和java.lang.ProcessBuilder 线程 表 ...
分类:
编程语言 时间:
2018-08-20 11:31:58
阅读次数:
153