日期:2014-05-19  浏览次数:20648 次

关于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+"   ") 这个肯定会一个个的输出的啊
------解决方案--------------------
引用:
引用:System.out.print这个不会换行不是这个换行。是每个乘法休眠1秒,然后输出,在后面我加了一个换行语句了。每次输出时总是一行输出一次,但是休眠时间是正确的

你是想让每秒输出一行?
那sleep方法放到外层循环中。
------解决方案--------------------
你的意思是程序每秒输出乘法的结果,强调的是这个结果,而不是程序的那一行,对吧!
那你就可以这样子做,你先把乘法得到的结果用一个变量来接收,然后只是输出运行的部分如:1*2=
就输出这么多,记得不要换行;
然后使用线程休眠一秒Thread(1000)然后再System.out.print(前面变量所存的那个结果);此时换行;
这样子才能实现你所需要的效果,这句其实就是将你的程序与结果分开。而你现在的代码是:使用线程休眠一秒Thread(1000)就执行整句 System.out.print(i+"X"+j+"="+i*j+"   ");去了,连结果都一起输出出来了,所以 导致不能实现你所需的效果!