Java 所有线程完成后,如何打印内容?
我试图在两个线程完成运行后打印一些内容。我一直在阅读类似问题的答案,所有这些问题都是关于尝试join()方法的。这对我来说是个问题,因为我尽量不破坏两个线程交替运行的方式。如果我使用第一个线程的方法编写,第二个线程将没有机会参与我希望他们执行的操作。反过来说 如何在两个线程完成交替运行后立即打印内容 我会在这里附上代码。文件f1和f2分别在单独的行中包含十个随机数Java 所有线程完成后,如何打印内容?,java,multithreading,Java,Multithreading,我试图在两个线程完成运行后打印一些内容。我一直在阅读类似问题的答案,所有这些问题都是关于尝试join()方法的。这对我来说是个问题,因为我尽量不破坏两个线程交替运行的方式。如果我使用第一个线程的方法编写,第二个线程将没有机会参与我希望他们执行的操作。反过来说 如何在两个线程完成交替运行后立即打印内容 我会在这里附上代码。文件f1和f2分别在单独的行中包含十个随机数 import java.io.FileReader; import java.io.IOException; import java
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();
}
}
导入java.io.FileReader;
导入java.io.IOException;
导入java.util.Scanner;
公共类JavaTip3Thread扩展线程
{
公共线程;
静态整数a[]=新整数[10];
静态整数b[]=新整数[10];
静态整数c[]=新整数[10];
静态int指数=0;
静态布尔fin=false;
静态int-ok;
公共JavaTip3Thread()
{
线程=新线程(此);
}
公共静态int[]已读(FileReader in)
{
扫描仪s=新扫描仪(英寸);
int[]x=新的int[10];;
而(s.hasNextLine())
{
对于(int i=0;i<10;i++)
{
x[i]=s.nextInt();
}
}
s、 close();
返回x;
}
公帑
{
while(fin!=真)
{
整数和=0;
总和+=a[指数]+b[指数];
c[指数]=总和;
System.out.println(a[index]+“+”+b[index]+“=”+c[index]);
索引++;
如果(索引==a.length)
{
fin=真;
}
}
}
公开募捐
{
sum();
}
公共静态void main(字符串args[])引发IOException
{
FileReader in=newfilereader(“D:\\IESC\\Java\\JavaTip3Thread\\src\\f1.txt”);
FileReader in2=新文件读取器(“D:\\IESC\\Java\\JavaTip3Thread\\src\\f2.txt”);
a=读取(in);
b=读取(in2);
JavaTip3ThreadT1=新的JavaTip3Thread();
JavaTip3ThreadT2=新的JavaTip3Thread();
t1.start();
t2.start();
对于(int i=0;i<10;i++)
{
System.out.println(“c[“+i+”]=“+c[i]+”);
}
in.close();
in2.close();
}
}
这将触发两个线程,然后等待第一个线程完成,然后等待第二个线程完成
HTH.为什么您认为在一个线程上调用
join
会阻止另一个线程继续并发运行?\n我误解了join()的工作方式。我认为一旦你在一个线程上调用join(),它就会停止任何其他线程,直到它完成。它成功了,非常感谢。线程对我来说是新事物,我经常犯这样的错误。
t1.start();
t2.start();
t1.join();
t2.join();