黑马程序员技术交流社区
标题:
关于线程的问题2
[打印本页]
作者:
ぺsimon☆
时间:
2013-4-20 17:39
标题:
关于线程的问题2
本帖最后由 ぺsimon☆ 于 2013-4-21 11:18 编辑
代码如下
/**
需求:简单的买票程序
多个窗口买票
*/
class Ticket extends Thread
{
private static int t=100;
public void run()
{
while(true)
{
if(t>0)
{
System.out.println(Thread.currentThread().getName()+"sale:"+t--);
}
}
}
}
class TicketDemo
{
public static void main(String[] args)
{
Ticket t1=new Ticket();
Ticket t2=new Ticket();
Ticket t3=new Ticket();
Ticket t4=new Ticket();
t1.start();
t2.start();
t3.start();
t4.start();
}
}
复制代码
问题:下面这句话是怎么运行的呢?怎么打印结果有 Thread-2sale:100
while(true)
{
if(t>0)
{
System.out.println(Thread.currentThread().getName()+"sale:"+t--);
}
我的理解是t=100时,判断当whie是真运行下面代码,判断t>0,执行输出代码:System.out.println(Thread.currentThread().getName()+"sale:"+t--);
输出代码不是:t--不是输出99吗,怎么变了100 的呢? 100是怎么来的呢?
作者:
JavaUtil
时间:
2013-4-20 17:46
本帖最后由 JavaUtil 于 2013-4-20 17:52 编辑
这是运算符的特性。
当你的运算符是(++、--)时,需要判断它是前置还是后置。
如果是前置,表示先赋值,后参与运算。
如果是后置,表示先参与运算,然后再赋值。
你这里的是t--,他会先赋值显示t,再参与运算。等同于:
System.out.println(Thread.currentThread().getName()+"sale:"+t);
t=t-1;
作者:
ld5128702
时间:
2013-4-20 19:16
例如:x=t--,它是先赋值给x然后才自减,所以是显示也有100
作者:
ぺsimon☆
时间:
2013-4-20 22:25
明白了谢谢
作者:
黄玉昆
时间:
2013-4-21 07:38
如果问题解决了,请将问题分类改为“已解决”,谢谢
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2