如下:classTick{privateinttick=10;publicintgetTick(){returntick;}publicvoidsetTick(inttick){this.tick=tick;}}classTicketextendsThread{Ticktick;Ticket(Ticktick){this.tick=...
如下:
class Tick
{
private int tick = 10;
public int getTick(){
return tick;
}
public void setTick(int tick){
this.tick = tick;
}
}
class Ticket extends Thread
{
Tick tick;
Ticket(Tick tick){
this.tick = tick;
}
public void run(){
while(tick.getTick()>0){
int temp = tick.getTick();
System.out.println(currentThread().getName()+"---sale"+temp--);
tick.setTick(temp);
}
}
}
class TicketDemo
{
public static void main(String[] args)
{
Tick t = new Tick();
Ticket t1 = new Ticket(t);
Ticket t2 = new Ticket(t);
t1.start();
t2.start();
}
}
随机一个结果如下:
我想问一下,为什么两个线程中的tick不是唯一的呢?
另外,我知道可以定义static,但是我想不使用static让tick唯一,所以定义一个Tick类,然而从代码上看我感觉tick是唯一的,没想打结果并不是
再者,线程安全我暂时不想考虑,虽然确实是不安全的,但是不安全是应该出现0,负数等情况,没理由出现重复吧。
所以,还是想问一下tick不唯一的原因,谢谢。
展开