多线程同时读并计数

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;
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,890评论 18 139
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,760评论 18 399
  • Java-Review-Note——4.多线程 标签: JavaStudy PS:本来是分开三篇的,后来想想还是整...
    coder_pig阅读 1,673评论 2 17
  • 莫宁!吃草,搬砖!
    黄花大小伙CD阅读 209评论 0 0
  • 上上周我的情绪糟糕透了,也许是因为春天来了,再加上荷尔蒙的作用。让我觉得很多事情都特别糟,不停的否定自己,...
    悦莹阅读 534评论 0 0