Q:启动三个线程,同时读取一个文件里,并记录文件里"u51" 这个字符出现的次数。
A:涉及到多线程,可以用Callable接口来创建线程对象,Callable接口是在java.util.concurrent包下面的。
import java.util.*;
import java.io.*;
import java.util.concurrent.*;
public class 多线程计数
{
public static void main(String[] args) throws Exception
{
File file=new File("a.txt");
Scanner sc=new Scanner(file);
ThirdThread tt=new ThirdThread();
tt.sc=sc;
FutureTask<Integer> task=new FutureTask<>(tt);
new Thread(task).start();
new Thread(task).start();
new Thread(task).start();
System.out.println(task.get());
}
}
class ThirdThread implements Callable<Integer>
{
public Scanner sc;
public int count;
@Override
public Integer call() throws Exception
{
while (sc.hasNextLine())
{
String str=sc.nextLine();
if (str.contains("u51"))
{
count++;
}
}
return count;
}
}