我想在两个线程完成运行后打印一些东西。我一直在阅读类似问题的答案,所有这些都是关于尝试join()方法。这对我来说是个问题,因为我尽量不破坏两个线程交替运行的方式。如果我用第一个线程使用方法,第二个线程就没有机会参与我希望他们做的动作。反过来说。
如何在两个线程交替运行后立即打印出来的东西?
我会在这里附上代码。文件f1和f2每个包含10个随机数字。
import java.io.FileReader;
import java.io.IOException;
import java.util.Scanner;
public class JavaTip3Thread extends Thread
{
public Thread thread;
static int a[] = new int[10];
static int b[] = new int[10];
static int c[] = new int[10];
static int index = 0;
static boolean fin = false;
static int ok;
public JavaTip3Thread()
{
thread = new Thread(this);
}
public static int[] read(FileReader in)
{
Scanner s = new Scanner(in);
int[] x = new int[10];;
while(s.hasNextLine())
{
for(int i = 0; i < 10; i++)
{
x[i] = s.nextInt();
}
}
s.close();
return x;
}
public void sum()
{
while(fin != true)
{
int sum = 0;
sum += a[index] + b[index];
c[index] = sum;
System.out.println(a[index] + " + " + b[index] + " = " + c[index]);
index++;
if(index == a.length)
{
fin = true;
}
}
}
public void run()
{
sum();
}
public static void main(String args[]) throws IOException
{
FileReader in = new FileReader("D:\\IESC\\Java\\JavaTip3Thread\\src\\f1.txt");
FileReader in2 = new FileReader("D:\\IESC\\Java\\JavaTip3Thread\\src\\f2.txt");
a = read(in);
b = read(in2);
JavaTip3Thread t1 = new JavaTip3Thread();
JavaTip3Thread t2 = new JavaTip3Thread();
t1.start();
t2.start();
for(int i = 0; i < 10; i++)
{
System.out.println("c[" + i + "]= " + c[i] + " ");
}
in.close();
in2.close();
}
}
答案 0 :(得分:0)
t1.start();
t2.start();
t1.join();
t2.join();
这将触发两个线程,然后才会等待第一个线程完成,然后等待第二个线程。
HTH。