如何在java中使用不同的线程在同一行上并排打印数字?
这是输出的外观: 每列应使用单独的线打印。因此,在本例中,将有3条线程,一条打印数字,另一条打印正方形,另一条打印立方体 根据大家的意见,我编写了这段代码如何在java中使用不同的线程在同一行上并排打印数字?,java,multithreading,Java,Multithreading,这是输出的外观: 每列应使用单独的线打印。因此,在本例中,将有3条线程,一条打印数字,另一条打印正方形,另一条打印立方体 根据大家的意见,我编写了这段代码 public class PrintThread { private static final int LIMIT=10; final static Queue<Integer> number=new LinkedList(); final static Queue<Integer> square=new Linke
public class PrintThread
{
private static final int LIMIT=10;
final static Queue<Integer> number=new LinkedList();
final static Queue<Integer> square=new LinkedList();
final static Queue<Integer> cube=new LinkedList();
public static void main(String[] args)
{
System.out.println("Number\tSquare\tCube");
for(int i=0;i<LIMIT;i++)
number.offer(i);
new Thread(new Runnable(){
public void run(){
for(int i=0;i<LIMIT;i++)
square.offer(i*i);
}
}).start();
new Thread(new Runnable(){
public void run(){
for(int i=0;i<LIMIT;i++)
cube.offer(i*i*i);
}
}).start();
for(int i=0;i<LIMIT;i++){
System.out.println(number.poll()+"\t"+square.poll()+"\t"+cube.poll());
}
}
}
公共类打印线程
{
专用静态最终整数限值=10;
最终静态队列号=新LinkedList();
final static Queue square=new LinkedList();
最终静态队列多维数据集=新LinkedList();
公共静态void main(字符串[]args)
{
System.out.println(“Number\tSquare\tCube”);
对于(int i=0;i实际上,3个线程在同一行上一个接一个地打印传达了顺序执行的含义。我认为线程在这里没有用处
但是,如果您的意思是只需要使用不同的线程来执行计算,那么您可以在线程上使用join()
。您可以使用一个循环来初始化和启动线程,并在第二个循环中使用join()
它们。(注意,如果join()
在同一循环中,然后线程按顺序执行。)
第二次循环后,您可以打印格式化的结果。尝试以下操作:
class RunnableDemo implements Runnable {
private Thread t;
private String threadName;
static int i=0;
RunnableDemo( String name){
threadName = name;
}
public void run() {
i=i+1;
System.out.print(""+i+"\t\t"+(i*i)+"\t");
}
public void start ()
{
System.out.print("\t"+(i*i*i+"\n"));
}
}
class TestThread {
public static void main(String args[])
{
System.out.print("Number Square Cube\n");
RunnableDemo [] r1=new RunnableDemo[10];
for(int i=1;i<10;i++)
{
r1[i]=new RunnableDemo(""+i);
r1[i].run();
r1[i].start();
}
}
}
类RunnableDemo实现Runnable{
私有线程t;
私有字符串threadName;
静态int i=0;
RunnableDemo(字符串名称){
threadName=名称;
}
公开募捐{
i=i+1;
系统输出打印(“+i+”\t\t“+(i*i)+”\t”);
}
公共无效开始()
{
系统输出打印(“\t”+(i*i*i+”\n”);
}
}
类测试线程{
公共静态void main(字符串参数[])
{
System.out.print(“数字方形立方体\n”);
RunnableDemo[]r1=新的RunnableDemo[10];
对于(int i=1;iIt真的不清楚你在问什么。你在问如何做某件事,但你准确地描述了如何做。你有什么问题吗?你需要每个线程打印自己的列吗?如果采用不同的设计,你可以避免大量丑陋的同步,也许有3个线程提供一个专用的队列ed输出线程轮询要打印的数字。是否可以用线程填充某些数据结构,并在处理完成后打印?此问题似乎与主题无关,因为它没有显示解决问题的诚意。@Arkanon是的,我希望在控制台上使用它。