如何在Java中正确使用线程

如何在Java中正确使用线程,java,jvm,Java,Jvm,我有样品线。我的逻辑是返回路径中的文件数,每3秒钟更新一次结果,然后按单词搜索文件。线程应该无限运行。我想知道我的代码逻辑是否正确。写这样的东西最好的方法是什么。先谢谢你。 我的代码如下所示: 导入java.io.File; 导入java.lang.reflect.Field; 公共类MyThread实现可运行{ 私有线程t; 私有字符串threadName; 私有字符串字; 私有字符串路径; MyThread(字符串名称){ threadName=名称; System.out.println(

我有样品线。我的逻辑是返回路径中的文件数,每3秒钟更新一次结果,然后按单词搜索文件。线程应该无限运行。我想知道我的代码逻辑是否正确。写这样的东西最好的方法是什么。先谢谢你。 我的代码如下所示:

导入java.io.File;
导入java.lang.reflect.Field;
公共类MyThread实现可运行{
私有线程t;
私有字符串threadName;
私有字符串字;
私有字符串路径;
MyThread(字符串名称){
threadName=名称;
System.out.println(threadName+“线程已创建”);
}
@凌驾
公开募捐{
System.out.println(“Running”+threadName);
试一试{
文件=新文件(路径);
File files[]=File.listFiles();
System.out.println(files.length);
如果(!word.isEmpty())
{
试一试{
用于(文件f:文件){
if(f.getName().startsWith(word)){
System.out.println(f.getName());
}
}
}
捕获(例外e){
System.err.println(e.getMessage());
}
}
}捕获(例外e){
System.out.println(“线程”+threadName+“中断”);
}
System.out.println(“线程”+threadName+“退出”);
}
公共无效开始(){
System.out.println(“起始”+threadName);
如果(t==null){
t=新线程(此,线程名称);
t、 开始();
}
}
公共无效设置字(字符串字){
这个单词=单词;
}
公共void setPath(字符串路径){
this.path=path;
}
}
和Main.java

import java.util.Scanner;
公共班机{
公共静态void main(字符串[]args)引发InterruptedException{
while(true){
MyThread first=新的MyThread(“first”);
扫描仪=新的扫描仪(System.in);
System.out.println(“输入单词:”);
字符串字=scanner.nextLine();
第一,设置字(word);
setPath(“C:\\Users\\myuser\\Desktop”);
首先,开始();
睡眠(3000);
}
}
}

您的代码看起来很好(目测)。这不是你所期望的吗?“你在寻求什么样的行为改变?”约瑟夫拉森说,“我想怎么做就怎么做。”。我只是想知道我的代码是好的还是更好的。为此,你可能想把它贴在上面,这是为了检查和改进工作代码。一定要仔细阅读他们的帮助页面,使你的问题符合该网站的质量标准。你似乎认为线程总是在最多3秒钟内完成,这是不保证的。但只要这样做,在后台线程中执行该操作就过时了。