class TestThread implements Runnable
{
int tickes=100;
public void run()
{
while(true){
if(tickes>0)
System.out.println(Thread.currentThread().getName()+"is salling tickets"+" "+tickes--);} }
}
class TestTicket
{
public static void main(String args[])
{
TestThread t=new TestThread();
new Thread(t).start();
new Thread(t).start();
new Thread(t).start();
new Thread(t).start();
}
}
为什么我在命令行里用javac编译和java运行的结果和在MyEclipse中运行的结果不一样啊(在命令行用java运行结果tickets不是递减的,基本上没有什么规律,而在MyEclipse中运行时却是递减的,从100减到1)我是菜鸟 谁能帮我解决一下 谢谢了
{
int tickes=100;
public void run()
{
while(true){
if(tickes>0)
System.out.println(Thread.currentThread().getName()+"is salling tickets"+" "+tickes--);} }
}
class TestTicket
{
public static void main(String args[])
{
TestThread t=new TestThread();
new Thread(t).start();
new Thread(t).start();
new Thread(t).start();
new Thread(t).start();
}
}
为什么我在命令行里用javac编译和java运行的结果和在MyEclipse中运行的结果不一样啊(在命令行用java运行结果tickets不是递减的,基本上没有什么规律,而在MyEclipse中运行时却是递减的,从100减到1)我是菜鸟 谁能帮我解决一下 谢谢了
和你在TestThread 上加上synchronized关键字是一样的
class TestThread implements Runnable
{
int tickes=100;
public synchronized void run()
{
while(true){
if(tickes>0)
System.out.println(Thread.currentThread().getName()+"is salling tickets"+" "+tickes--);} }
}
//加上这个在CMD里和MyEclipse里的运行结果就一样了