关于Java的线程。
class mythread1 extends Thread
{
int i=1,j=1;
public void run()
{
for(i=1;i<10;i++)
{
for(j=1;j<=i;j++)
{
System.out.print(i+"X"+j+"="+i*j+" ");
try{
sleep(1000);
}
catch(InterruptedException e){}
}
System.out.println();
}
}
}
public class mythread {
public static void main (String []args)
{
mythread1 my=new mythread1();
my.start();
}
}
为什么,不是一个一个隔一秒输出,而是一行输出呢??
------解决方案--------------------System.out.print这个不会换行
------解决方案--------------------但是System.out.print(i+"X"+j+"="+i*j+" ") 这个肯定会一个个的输出的啊
------解决方案--------------------
你是想让每秒输出一行?
那sleep方法放到外层循环中。
------解决方案--------------------你的意思是程序每秒输出乘法的结果,强调的是这个结果,而不是程序的那一行,对吧!
那你就可以这样子做,你先把乘法得到的结果用一个变量来接收,然后只是输出运行的部分如:1*2=
就输出这么多,记得不要换行;
然后使用线程休眠一秒Thread(1000)然后再System.out.print(前面变量所存的那个结果);此时换行;
这样子才能实现你所需要的效果,这句其实就是将你的程序与结果分开。而你现在的代码是:使用线程休眠一秒Thread(1000)就执行整句 System.out.print(i+"X"+j+"="+i*j+" ");去了,连结果都一起输出出来了,所以 导致不能实现你所需的效果!