首页 > 解决方案 > Java创建带参数的线程

问题描述

我有一个程序可以计算文本中的单词数次。我希望循环位于单独的线程中。如何将参数传递给线程articlesstringToSearch或者设置全局参数?

public class Main {
    public static void main(String[] args)  {
        Scanner s = new Scanner(System.in);
        int numberArticles = s.nextInt();
        ArrayList<Article> articles = new ArrayList<>(); 
        for(int i = 0; i < numberArticles; i++) {
            String articleName = s.nextLine();
            String content = ""; 
            File file = new File(articleName + ".txt"); 
              BufferedReader br;
            try {
                br = new BufferedReader(new FileReader(file));
                  String st; 
                  while ((st = br.readLine()) != null) {
                    content += st; 
                  } 
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            } 
            articles.add(new Article(articleName, content));
        }
        String stringToSearch = s.nextLine();
        MyThread myThread = new MyThread();
        myThread.start();
    }
}
public class MyThread extends Thread {
    public void run(){
        for(Article article : articles) {
            int counter = 0;
            String[] words = article.getContent().split(" ");
            for (String word : words) {
                if(word.equals(stringToSearch)) {
                    counter++;
                }
            }
        }
    }
  }

标签: javamultithreading

解决方案


您正在Thread使用自定义类进行扩展。您可以向该类 ( MyThread) 添加任意数量的任何附加属性。您可以创建一个构造函数MyThread来传递所有这些参数。


推荐阅读