java - Java创建带参数的线程
问题描述
我有一个程序可以计算文本中的单词数次。我希望循环位于单独的线程中。如何将参数传递给线程articles
,stringToSearch
或者设置全局参数?
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++;
}
}
}
}
}
解决方案
您正在Thread
使用自定义类进行扩展。您可以向该类 ( MyThread
) 添加任意数量的任何附加属性。您可以创建一个构造函数MyThread
来传递所有这些参数。
推荐阅读
- python - 使用开始和结束索引方法是实现二进制搜索的唯一方法吗?
- sharepoint - PowerApps - 发布后未触发 onChange,在编辑器应用预览中触发(F5)
- kubernetes - 在同一个 TF 脚本中使用多个 Terraform 提供程序(GCP 和 Kubernetes)创建资源
- python - 连接字符串而不打印到终端顶部
- amazon-web-services - 在 Amazon Redshift 中的物化视图上创建索引
- python-3.x - 如何在多处理python中为思路分配资源
- sql-server - 如何遍历层次结构以查找循环引用?
- kubernetes - 无法连接到 Kubernetes 仪表板
- swift - UIStackvView 在 UIScrollView 中跳转。迅速
- java - Hadoop mapreduce 2 文件过滤?