关于一个简单的多线程问题

zhxlsuyu1984 2009-09-17 07:33:32
刚学java学到多线程这块按照自己的理解写了个模拟火车站售票的程序,可是运行结果还是会把一张票同时卖多次啊!!不知道是什么问题。


class ThreadDemo{
public static void main(String [] args){
ThreadTest tt = new ThreadTest();
new Thread(tt).start();
new Thread(tt).start();
new Thread(tt).start();
new Thread(tt).start();

}
}

class ThreadTest implements Runnable{
public void run(){
int tickets = 100;
while(true && tickets>0){
System.out.println(Thread.currentThread().getName()+" saling the ticket of "+tickets--);
}
}
}
...全文
50 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
cz61919345 2009-09-17
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 goldenfish1919 的回复:]
Java codeclass ThreadTestimplements Runnable{int tickets=100;publicvoid run(){while(tickets>0){try{
Thread.sleep(100);
}catch(Exception e){}synchronized(this){if(tickets>0)System.out.println(Thread.currentThread().getName()+" saling the ticket of"+tickets--);
}
}
}
}
[/Quote]正解呀!
若鱼1919 2009-09-17
  • 打赏
  • 举报
回复

class ThreadTest implements Runnable{
int tickets = 100;
public void run(){
while(tickets>0){
try{
Thread.sleep(100);
}catch(Exception e){}
synchronized(this){
if(tickets>0)System.out.println(Thread.currentThread().getName()+" saling the ticket of "+tickets--);
}
}
}
}

shine333 2009-09-17
  • 打赏
  • 举报
回复
public void run(){
int tickets = 100;
变成
static int tickets = 100;
public void run() {
....
}
若鱼1919 2009-09-17
  • 打赏
  • 举报
回复

class ThreadTest implements Runnable{
int tickets = 100;
public void run(){
synchronized(this){
while(true && tickets>0){
System.out.println(Thread.currentThread().getName()+" saling the ticket of "+tickets--);
}
}
}
}

monkeyking1987 2009-09-17
  • 打赏
  • 举报
回复
添加synchronized关键字试试看.

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧