A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Joesph 中级黑马   /  2013-7-26 17:03  /  1189 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 杜光 于 2013-7-27 14:53 编辑

package ThreadDemo;
class Sale implements Runnable  
{  
    private int tick = 100;  
    boolean flog = true;  
    public void run()  
    {  
        if (flog)  
        {  
            //线程一执行   
            while(true)  
            {  
                //如果对象为obj,则是两个锁,是不安全的;换成this,为一个锁,会安全很多   
                synchronized(this)  
                {  
                    if (tick > 0)
                    {   try{Thread.sleep(10);}catch(Exception e){}
                        System.out.println(Thread.currentThread().getName() + "--code--:" + tick--);  
                    }
                 }  
              }  
          }
   
        //线程二执行   
        else  
            while(true)  
                show();  
    }  
    public synchronized void show()  
    {  
        if (tick > 0)  
       {  
         try{Thread.sleep(10);}catch(Exception e){}
            System.out.println(Thread.currentThread().getName() + "----show-----:" + tick--);  
   
        }
     }  
}  
  
class ThreadDemo4  
{  
    public static void main(String[] args)   
    {  
        Sale t = new Sale();  
        Thread t1 = new Thread(t);//创建一个线程   
        Thread t2 = new Thread(t);//创建一个线程   
        t1.start();  
        try{Thread.sleep(10);}catch(Exception e){}//关闭主线程,运行t1
        t.flog = false;//开启线程一,即关闭if,让线程二执行else中语句   
        t2.start();  
    }
}

就是红色 部分,如果把{}去掉,怎么解释?

评分

参与人数 1技术分 +1 收起 理由
杜光 + 1 每天提问并回答问题,是对知识的复习和积累.

查看全部评分

3 个回复

正序浏览
李政 发表于 2013-7-26 17:22
if (tick > 0)
try{Thread.sleep(10);}catch(Exception e){}
                        System.out.println( ...

是的是的
回复 使用道具 举报
if (tick > 0)
try{Thread.sleep(10);}catch(Exception e){}
                        System.out.println(Thread.currentThread().getName() + "--code--:" + tick--);  
如果这样写代码的话 System.out.println(Thread.currentThread().getName() + "--code--:" + tick--);  这句代码便一直会执行到啊,当tick<=0的时候,照样会打印

不知道你是不是问这个。。
回复 使用道具 举报
就没有做异常处理
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马