lisliefor
发贴: 287
积分: 7
|
于 2006-06-23 09:26
develop8 wrote: void star2(){ synchronized(this){ ........ } } //以上方法被注释 synchronized void star2(){ ...... } }
楼主的例子展示了synchronized的两种用法:前者锁一个类,或者理解为,目的在于锁这个类所包含的数据元素,即锁资源;后者锁的是针对这个资源操作的方法。两种用法,效果殊途同归。 一个浅显的比如:如果我们有若干个线程,都需要针对一个数组String s[]进行插入、读取、修改(读取后,该元素已被拿出来),那么有两个办法: synchronized(s){ ....... /*这里写针对数组的任何插入、读取、修改的操作。保证当前只有一个线程占用 *该数组资源,即锁住了资源,其他人无法动用。 */ } synchronized void Insert(){ ....... /*针对数组的插入操作,保证当前只有一个线程能够调用这个方法。 *注:方法名随便取,具体功能看你代码如何实现 */ } synchronized void Update(){ ...... /*修改操作,同上。 * */ } synchronized void getElement(){ ..... /*读取操作,同上。 * */ }
why edited on 2006-06-23 09:46
|