读书人

关于Java的线程。该如何处理

发布时间: 2013-01-12 16:25:03 作者: rapoo

关于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+" ");去了,连结果都一起输出出来了,所以 导致不能实现你所需的效果!

读书人网 >J2EE开发

热点推荐