1、sleep() 使当前线程(即调用该方法的线程)暂停执行一段时间,让其他线程有机会继续执行,但它并不释放对象锁。也就是说如果有synchronized同步快,其他线程仍然不能访问共享数据。注意该方法要捕捉异常。 例 如有两个线程同时执行(没有synchronized)一个线程优先级为MAX_PR ...
分类:
编程语言 时间:
2017-11-25 19:23:05
阅读次数:
192
1.对象的加锁及其操作 程序中单独的并发线程对同一对象进行操作的代码段,成为临界区。java语言中的临界区可以是一个语句块 或者方法,使用关键字synchronized进行标识。 对象锁:java平台把由synchronized语句指定的对象 设置为对象锁或者监视器(monitor),对象锁是一种独 ...
分类:
编程语言 时间:
2017-11-07 00:05:44
阅读次数:
201
synchronized用于多线程设计,有了synchronized关键字,多线程程序的运行结果将变得可以控制。synchronized关键字用于保护共享数据。 synchronized实现同步的机制:synchronized依靠"锁"机制进行多线程同步,"锁"有2种,一种是对象锁,一种是类锁。 1 ...
分类:
编程语言 时间:
2017-10-18 10:08:09
阅读次数:
277
1,notify的含义 (1)notify一次只随机通知一个线程进行唤醒 (2)在执行了notify方法之后,当前线程不会马上释放该对象锁,呈wait状态的线程也不能马上获得该对象锁, 要等到执行notify方法的线程将程序执行完 ,也就是退出sychronized代码块后,当前线程才会释放锁, 而 ...
分类:
其他好文 时间:
2017-10-10 13:11:23
阅读次数:
257
synchronized、volatile、ReentrantLock、concurrent 线程安全:当多个线程访问某一个类(对象或方法)时,这个类始终都能表现出正确的行为,那么这个类(对象或方法)就是线程安全的 synchronized:可以在任意对象及方法上加锁,而加锁的这段代码称为“互拆区” ...
分类:
编程语言 时间:
2017-10-10 10:02:55
阅读次数:
204
每个对象在出生的时候就有一把钥匙(监视器Monitor),那么被synchronized 修饰的方法相当于给方法加了一个锁,这个方法就可以进行同步,在多线程的时候,不会出现线程安全问题。 ...
分类:
其他好文 时间:
2017-10-02 00:50:26
阅读次数:
241
每个对象在出生的时候就有一把钥匙(监视器),那么被synchronized 修饰的方法相当于给方法加了一个锁,这个方法就可以进行同步,在多线程的时候,不会出现线程安全问题。 下面通过一张图片进行讲解: ...
分类:
其他好文 时间:
2017-10-01 00:26:26
阅读次数:
213
1.sleep() 与 wait()的区别 sleep是线程类( Thread)的方法,导致此线程暂停执行指定时间,给执行机会给其他线程,但是监控状态依然保持,到时后会自动恢复。调用sleep不会释放对象锁。 wait 是Object 类的方法,对此对象调用wait 方法导致本线程放弃对象锁,进入等 ...
分类:
编程语言 时间:
2017-09-30 13:25:41
阅读次数:
189
三种List:ArrayList,Vector,LinkedList 类继承关系图 ArrayList和Vector通过数组实现,几乎使用了相同的算法;区别是ArrayList不是线程安全的,Vector绝大多数方法做了线程同步。 LinkedList通过双向链表实现。 源代码分析 1、添加元素到列 ...
分类:
编程语言 时间:
2017-09-26 12:53:53
阅读次数:
274
1、自旋锁 2、自旋锁的其他种类 3、阻塞锁 4、可重入锁 5、读写锁 6、互斥锁 7、悲观锁 8、乐观锁 9、公平锁 10、非公平锁 11、偏向锁 12、对象锁 13、线程锁 14、锁粗化 15、轻量级锁 16、锁消除 17、锁膨胀 18、信号量 ...
分类:
编程语言 时间:
2017-09-24 15:29:45
阅读次数:
160