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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

弄了两小时了,好急躁,麻烦大神帮我看下! 耽搁你几分钟时间帮我一下,谢谢了!
我不加synchronized运行的时候就是多线程,加了为什么就变成单线程了,怎么运行都是一个线程在走。
class RunInfo implements Runnable
{
                 private int tick = 100;
                 public void run()
                {
                           while(true)
                                    {  
                                          show();
                                    }
                 }
              public synchronized void show()
              {
                        if(tick>0)
                         {
                                    try{Thread.sleep(10);}catch(Exception e){}
                                     System.out.println(Thread.currentThread().getName()+"::"+tick--);   
                         }
              }
}

class  SynchronizedDemo
{
            public static void main(String[] args)
             {
                      RunInfo rf= new RunInfo();
                      Thread t1 = new Thread(rf);
                      Thread t2 = new Thread(rf);
                      Thread t3 = new Thread(rf);
                      Thread t4 = new Thread(rf);
                      t1.start();
                      t2.start();
                      t3.start();
                      t4.start();
  
             }
}



19 个回复

倒序浏览
你写的是多线程的,可以多个线程执行的,把票加到500试试能不能看到效果
回复 使用道具 举报
金逗逗 发表于 2015-8-11 07:33
你写的是多线程的,可以多个线程执行的,把票加到500试试能不能看到效果

不行啊,我写1000运行还是那样,但是把synchronized去了运行就可以。
回复 使用道具 举报
Thread-0::80
Thread-0::79
Thread-0::78
Thread-0::77
Thread-0::76
Thread-3::75
Thread-3::74
Thread-3::73
Thread-3::72
Thread-3::71
上面是我运行你程序的一段结果,可以多线程运行。
可能是你电脑太好了吧,所以看不到效果,代码是没有问题的
回复 使用道具 举报
周博文 发表于 2015-8-11 08:29
Thread-0::80
Thread-0::79
Thread-0::78

谢谢了,只要不是代码写的有问题就行。
回复 使用道具 举报
学习一下  哥们你什么配置电脑  都是秒运行玩啊{:3_54:}
回复 使用道具 举报
你可以把sleep时间加大点看看
回复 使用道具 举报
传奇 中级黑马 2015-8-11 08:46:08
8#
不懂,帮顶了
回复 使用道具 举报
金逗逗 发表于 2015-8-11 08:44
你可以把sleep时间加大点看看

可能是哪里出BUG了。我调了5000还是一样,一直都是0线程在执行
Thread-0::3829
Thread-0::3828
Thread-0::3827
Thread-0::3826
Thread-0::3825
Thread-0::3824
Thread-0::3823
Thread-0::3822
回复 使用道具 举报
fmi110 发表于 2015-8-11 08:42
学习一下  哥们你什么配置电脑  都是秒运行玩啊

可是我都写了sleep()了
回复 使用道具 举报
4个线程执行try都睡眠了,第一个睡眠结束唤醒的线程一下就把100个票卖光了,票设置多一些就能看见效果了
回复 使用道具 举报
你的原代码    是没问题的  线程3唤醒的时候执行了一次看到没,

1111.png (50.69 KB, 下载次数: 32)

1111.png
回复 使用道具 举报
boboyuwu 发表于 2015-8-11 10:10
你的原代码    是没问题的  线程3唤醒的时候执行了一次看到没,

好的,谢谢了,代码没问题就行。
回复 使用道具 举报
lh5484826 发表于 2015-8-11 10:29
好的,谢谢了,代码没问题就行。

我之前也遇到过这种问题。。。忽然有一次出现了多个线程的名字就放心了。。。
回复 使用道具 举报
KALF 中级黑马 2015-8-11 10:36:29
15#
电脑配置高的话是这样的。我的也是,要把数值加好大才能体现。有时候好大也看不出效果。要把CPU弄得比较高才显示。
回复 使用道具 举报 1 0
sleep时间调长一些,或者数值加大。你这得多好的电脑。biu一下就全完事了。
回复 使用道具 举报
vipsong 发表于 2015-8-11 10:44
sleep时间调长一些,或者数值加大。你这得多好的电脑。biu一下就全完事了。 ...

终于好了,谢谢啊,我把sleep调到100终于出来了。       弄了一个晚上没好,纠结死了。睡觉。。
回复 使用道具 举报
小丑 发表于 2015-8-11 10:35
我之前也遇到过这种问题。。。忽然有一次出现了多个线程的名字就放心了。。。 ...

嗯。解决了。我sleep()调的太低了。 谢谢指点。
回复 使用道具 举报
a348639336 来自手机 中级黑马 2015-8-11 11:30:12
19#
不是票少了就是sleep小了,看来配置太好也是个问题。。
回复 使用道具 举报
  问题解决了我说个格式问题吧

try{Thread.sleep(10);}catch(Exception e){}

这个老师讲课时说了  为了偷懒这样写的,平时别这样写, 养成习惯了就糟了。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马