黑马程序员技术交流社区

标题: 同步函数里的疑难杂症 求大神赐教!!!!! [打印本页]

作者: 腹黑生姜    时间: 2015-6-30 20:56
标题: 同步函数里的疑难杂症 求大神赐教!!!!!
class StopThread implements Runnable{
       private boolean flag = true;
       public synchronid void run(){
             while(flag ){
                   try{
                        wait();
                  } catch(InterruptedException e){
                        System. out.println(Thread.currentThread().getName() + "..." + e);
                       
                  }
                  System. out.println(Thread.currentThread().getName() + "......");
            }
      }
       public void setFlag(){
             flag = false ;
      }
}
线程0一进来wait()了,冻结了,放弃了资格
但是我不懂得是为什么线程1还能进来???这是毕老师视频里讲的   不懂?不是说同步的时候只能进一个吗 !  为什么???
作者: 守门员    时间: 2015-7-1 09:31
你也知道wait()是等待并放弃了资格,放弃了执行资格就是把同步的锁放弃了,所以另外一个线程进来了,notify()是唤醒线程,并获取同步的锁
作者: 腹黑生姜    时间: 2015-7-1 09:37
守门员 发表于 2015-7-1 09:31
你也知道wait()是等待并放弃了资格,放弃了执行资格就是把同步的锁放弃了,所以另外一个线程进来了,notif ...

懂了!我以前一直以为wait和sleep功能是一样的!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2