如何在java中使用不同的线程在同一行上并排打印数字?

如何在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

这是输出的外观:

每列应使用单独的线打印。因此,在本例中,将有3条线程,一条打印数字,另一条打印正方形,另一条打印立方体

根据大家的意见,我编写了这段代码

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是的,我希望在控制台上使用它。