对于sleep()方法,我们首先要知道该方法是属于Thread类中的。而wait()方法,则是属于Object类中的。 sleep()方法导致了程序暂停执行指定的时间,让出cpu该其他线程,但是他的监控状态依然保持者,当指定的时间到了又会自动恢复运行状态。 在调用sleep()方法的过程中,线程不会 ...
分类:
编程语言 时间:
2017-09-21 15:47:05
阅读次数:
125
学而时习之,不亦说乎! --《论语》 为什么说是颠覆? 1)任何对象都可以作为锁对象,锁对象的行为都是一样的吗?之前我一直认为锁对象的方法都是定义在Object类中,而所有类都是Object的子类,这些方法又都是native方法,那么用哪个对象作为锁对象又有什么区别呢? 2)一个线程对象a在run( ...
分类:
其他好文 时间:
2017-09-15 16:49:24
阅读次数:
216
Java多线程与并发 学习总结(很详细) 1. 计算机系统 使用高速缓存来作为内存与处理器之间的缓冲,将运算需要用到的数据复制到缓存中,让计算能快速进行;当运算结束后再从缓存同步回内存之中,这样处理器就无需等待缓慢的内存读写了。 缓存一致性:多处理器系统中,因为共享同一主内存,当多个处理器的运算任务 ...
分类:
编程语言 时间:
2017-09-15 16:40:18
阅读次数:
208
Java在编写多线程程序时,为了保证线程安全,需要对数据同步,经常用到两种同步方式就是Synchronized和重入锁ReentrantLock。 相同点和区别 相同点:这两种同步方式有很多相似之处,它们都是加锁方式同步,而且都是阻塞式的同步,也就是说当如果一个线程获得了对象锁,进入了同步块,其他访 ...
分类:
其他好文 时间:
2017-09-10 11:15:42
阅读次数:
192
一、前言 本来想在另外一篇文章说的,发现可能篇幅有点大,所以还是另开一篇博文来说好了。知识参考《Java多线程编程核心技术》,评价下这本书吧——大量的代码,简单的说明,真像在看博客。不过这本书浅显易懂,篇幅也不长,一口气看个几十页,再照着demo敲敲代码,简直不要太爽。。哈哈 二、概念 对象锁:顾名 ...
分类:
编程语言 时间:
2017-09-08 13:22:44
阅读次数:
218
一、synchronized 这货可以锁对象,锁变量,锁方法,锁代码,好像什么都能锁,缺点就是如果一个锁堵了,其他的只能等待忙并不能把当前的锁给释放。二、 ReentrantLockReentrantLock 类实现了Lock ,它拥有与synchronized 相同的并发性和内存语义,但是添加了类 ...
分类:
编程语言 时间:
2017-09-05 13:58:36
阅读次数:
155
机制 锁机制是用来解决多线程共享资源时产生的冲突问题的。java 为每一个对象关联一个对象锁,通常把锁分为对象锁和类锁,他们的本质都是对象锁,只不过对象锁关联的是类的 Object 对象 (java.lang.Object),而类锁关联的是类的 Class 对象 java.lang.Class。 j... ...
分类:
编程语言 时间:
2017-09-04 14:47:48
阅读次数:
279
Java中的每一个对象都可以作为锁。1对于同步方法,锁是当前实例对象。2对于静态同步方法,锁是当前对象的Class对象。3对于同步方法块,锁是Synchonized括号里配置的对象。当一个线程试图访问同步代码块时,它首先必须得到锁,退出或抛出异常时必须释放锁。我们常引入对象锁和类锁的概念来有助于了解... ...
分类:
其他好文 时间:
2017-08-24 14:56:27
阅读次数:
184
从版本1.0开始,java中每个对象都有一个内部锁,如果一个方法用synchronized修饰,那么对象的锁将保护整个方法,也就是说要调用该方法,线程必须获得内部的对象锁 换句话说 等价于 内部对象只有一个相关条件,wait方法添加一个线程到等待集中,notifyAll方法解除等待线程的阻塞状态 主 ...
分类:
编程语言 时间:
2017-08-23 20:01:57
阅读次数:
123
同步锁分类 对象锁(this) 类锁(类的字节码文件对象即类名.class) 字符串锁(比较特别) 应用场景 在多线程下对共享资源的安全操作。 需求:启动5个线程对共享资源total进行安全操作。 同步锁在多线程单例模式下的使用 以上三类同步锁都可以。 package cn.myThread; pu ...
分类:
编程语言 时间:
2017-08-23 18:13:56
阅读次数:
190