黑马程序员技术交流社区
标题:
还是关于多线程卖票的小程序,一点小问题-PS.原谅我刨根...
[打印本页]
作者:
会说话的木头
时间:
2014-4-17 11:32
标题:
还是关于多线程卖票的小程序,一点小问题-PS.原谅我刨根...
class Ticket implements Runnable//extends Thread
{
private int tick =100;
//Object obj = new Object();
public void run()
{
while (true)
{
if (tick>0)
try
{
Thread.sleep(10);
}
catch (Exception e)
{
}
System.out.println(Thread.currentThread().getName()+"sale : "+tick--);
}
}
}
}
class TicketDemo2
{
public static void main(String[] args)
{
Ticket t=new Ticket();
Thread t1 = new Thread(t);
Thread t2 = new Thread(t);
Thread t3 = new Thread(t);
Thread t4 = new Thread(t);
t1.start();
t2.start();
t3.start();
t4.start();
}
}
复制代码
我把if的{}去掉,就出现如图的结果,加{}和不加{}怎么出现截然不同的结果???
QQ截图20140417112957.png
(9.96 KB, 下载次数: 4)
下载附件
2014-4-17 11:30 上传
作者:
⒈心只霸占沵
时间:
2014-4-17 11:49
1,如果if带{}当符合条件,执行{}里的所有内容
2,如果if不带{}符合条件,只执行if后面的一行代码
3,合成一句话就是,如果你的if 代码块中只有一行代码 {}可以省略不写
你的代码,去掉和不去掉的代码分别是一下两种情况
//{}未省略
while (true) {
if (tick>0){
try{ Thread.sleep(10);}catch (Exception e){}
System.out.println(Thread.currentThread().getName()+"sale : "+tick--);
}
}
//{}省略
while (true) {
if (tick>0)
try{ Thread.sleep(10);}catch (Exception e){} //只有这行代码属于if 条件代码块里的
System.out.println(Thread.currentThread().getName()+"sale : "+tick--);//这行则属于if代码块以外
}
复制代码
作者:
清风有意
时间:
2014-4-17 12:10
楼上说得对!
作者:
2528870651
时间:
2014-4-17 12:13
if后面加{},表示{}里面的内容都是if里面的。
if后面不加{},if就只执行if后面的一句话。
所以如果,if后面只接一句话的话加{}和不加{}是没有区别的。
即
if(x<10)
System.out.print(x);
和
if(x<10)
{
System.out.println(x);
}
是一样的
复制代码
但是如果if后面有不止一句话时,就是2种不同的情况。
上面的哥们也说了,我也不废话了。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2