1.wait 和notify()/notifyAll() 调用wait()和notify()之前必须获得对象锁,一般用在synchronized.调用wait()方法之后,线程便释放了对象的锁,必须重新获得对象锁2.clone() ->"shadow copy" and "deep copy"浅层....
分类:
编程语言 时间:
2015-10-21 20:46:42
阅读次数:
242
对于sleep()方法,我们首先要知道该方法是属于Thread类中的。而wait()方法,则是属于Object类中的。sleep()方法导致了程序暂停执行指定的时间,让出cpu该其他线程,但是他的监控状态依然保持者,当指定的时间到了又会自动恢复运行状态。在调用sleep()方法的过程中,线程不会释放...
分类:
编程语言 时间:
2015-09-09 17:30:08
阅读次数:
146
wait()、notify()、notifyAll()是三个定义在Object类里的方法,可以用来控制线程的状态。 这三个方法最终调用的都是jvm级的native方法。随着jvm运行平台的不同可能有些许差异。 ? 如果对象调用了wait方法就会使持...
分类:
其他好文 时间:
2015-08-18 16:48:12
阅读次数:
166
线程的同步
指当多个线程使用同一对象中被同步的资源时,要根据“先来后到”的顺序使用。
举个例子:现在只有一台电脑,现在有两个人A和B想玩游戏,一个人C想写代码,一个人D想听音乐。此时A、B、C三个人要抢这台电脑,谁先抢到谁用,用完了后面两个人在接着抢,谁抢到谁用。而D则不用,在另外三个人中任意一个人正在使用的时候,都可以播放音乐给他听;由此可以看出玩游戏和写代码的功能(方法)是要有“先来后到”...
分类:
编程语言 时间:
2015-08-13 14:25:49
阅读次数:
140
java语言支持两种形式的线程:互斥与协作。java虚拟机通过对象锁来实现互斥,允许多个线程在同一个共享数据上独立而互不干扰的工作。协作则是通过Object类的wait()方法和notify方法来实现的,允许多个线程为同一目标而共同工作。互斥是帮助线程在访问共享数据时不被其它线程干扰,而协作帮助线程与其它线程共同工作。
记得以前高中的时候,夏天每次下了晚自习,回到宿舍的时候,大家都想去洗个澡。但...
分类:
编程语言 时间:
2015-08-10 14:57:20
阅读次数:
257
首先介绍几个概念: wait()方法 wait()方法使得当前线程必须要等待,等到另外一个线程调用notify()或者notifyAll()方法。 当前的线程必须拥有当前对象的monitor,也即lock,就是锁。 线程调用wait()方法,释放它对锁的拥有权,然后等待另外的线程来通知它(通知的方式是notify()或者notifyAll()方法),这样它才能重新获得锁的拥有权和恢复执...
分类:
编程语言 时间:
2015-07-22 13:15:19
阅读次数:
125
sleep() 和 wait() 有什么区别? sleep是线程类(Thread)的方法,导致此线程暂停执行指定时间,给执行机会给其他线程,但是监控状态依然保持,到时后会自动恢复。调用sleep不会释放对象锁。wait是Object类的方法,对此对象调用wait方法导致本线程放弃对象锁,进入等待此....
分类:
其他好文 时间:
2015-07-09 00:38:44
阅读次数:
115
(网上的答案:sleep是线程类(Thread)的方法,导致此线程暂停执行指定时间,将执行机会给其他线程,但是监控状态依然保持,到时后会自动恢复。调用sleep不会释放对象锁。 wait是Object类的方法,对此对象调用wait方法导致本线程放弃对象锁,进入等待此对象的等待锁定池,只有针对此对象发出notify方法(或notifyAll)后本线程才进入对象锁定池准备获得对象锁进入运行状态。)
...
分类:
编程语言 时间:
2015-07-02 10:12:13
阅读次数:
126
对于sleep()方法,我们首先要知道该方法是属于Thread类中的。而wait()方法,则是属于Object类中的。sleep()方法导致了程序暂停执行指定的时间,让出cpu该其他线程,但是他的监控状态依然保持者,当指定的时间到了又会自动恢复运行状态。在调用sleep()方法的过程中,线程不会释放...
分类:
编程语言 时间:
2015-06-30 12:36:26
阅读次数:
142
sleep()方法属于Thread类,而wait()方法属于Object类。sleep()方法使程序暂停执行指定的时间,让出cpu给其他线程,但是他的监控状态依然保持者,当指定的时间到了又会自动恢复运行状态;在调用sleep()方法的过程中,线程不会释放对象锁。而当调用wait()方法的时候,线程会放弃对象锁,进入等待此对象的等待锁定池,使得其他线程可以使用同步控制块或者方法。wait()方法只能...
分类:
编程语言 时间:
2015-06-29 20:33:00
阅读次数:
119