public class Test12 extends Thread { private static String[][] str = new String[10][3]; public static void main(String[] args){ Thread t1 = new Test12(); t1.setName("A"); Thread t2 = new Test12(); t2.setName("B"); Thread t3 = new Test12(); t3.setName("C"); t1.start(); t2.start(); t3.start(); while(t1.isAlive() || t2.isAlive() || t3.isAlive()){ } printAll(str); } public static void push(String str1,int i){ if(str1.equals("A")){ str[i][0] = str1; } if(str1.equals("B")){ str[i][1] = str1; } if(str1.equals("C")){ str[i][2] = str1; } } public static void printAll(String[][] str1){ for(int x = 0;x<str1.length;x++){ for(int y = 0;y<str1[x].length;y++){ System.out.print(str[x][y]); } } } @Override public void run() { int i = 0; while(i<10){ push(Thread.currentThread().getName(),i); i++; } } } 自己的理解 迅雷的软件用过的 下载一个文件都会有待生成的文件 有多线程往里面写入数据 所以个人认为 不需要把问题复杂化了