tiechui

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

2010年12月1日

摘要: 经常看到说“ArrayList和HashMap是异步的,Vector和HashTable是同步的”,这类的东西,怎么创建同步类,异步类?怎么定义他们的?希望指点下类里面的方法会自动同步,比如你new 一个vectorVector ve=new Vector();ve.add("1");ve.add("2");如果有两个线程同时调用这个ve对象,那么第一个线程调用修改时候就会把ve加锁,那么第二个线程没法操作这个ve对象。如果用ArrayList list=new ArrayList();list.add("1"); 就不同步,如果一个 阅读全文
posted @ 2010-12-01 17:35 tiechui 阅读(291) 评论(0) 推荐(0) 编辑

摘要: 注意: 2个锁是调用关系的, 不是并列关系public class DeadLock { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub final Object resource1 = "res1"; final Object resource2 = "res2"; Thread t1 = new Thread() { public void run() { synchronized(resource1) { 阅读全文
posted @ 2010-12-01 16:54 tiechui 阅读(173) 评论(0) 推荐(0) 编辑

摘要: 注意: 1. wait()后 立即放锁, 给其他等待线程使用,当被唤醒,立即从wait()处执行(而不是从方法头重新执行) 2. notify(), 唤醒其他睡着的线程,不能唤醒自己。 3. 没有结束的问题用 while(用if, 则可能在错误情况下继续执行)。public class ProducerConsumer { public static void main(String[] args) { SyncStack ss = new SyncStack(); Producer p = new Producer(ss); Consumer c = new Consumer(ss... 阅读全文
posted @ 2010-12-01 16:25 tiechui 阅读(384) 评论(0) 推荐(0) 编辑