我无法在线程休眠时 运行 执行任务
I can't run a task while the thread is sleeping
在我们的系统中,我的任务是创建一个页面来实时显示我们系统的主要线程。
为了重新创建一个主要进程,我计划创建一个线程并让它休眠至少 5 秒。当上述线程处于睡眠状态时,我将获取所有活动线程,查看我创建的线程是否存在,然后将线程信息存储到我的 modelMap 中,该信息将传递到我的 JSP 上以显示它。
不过,当我尝试这样做时,我设法创建的测试首先等待线程完成休眠,而不是我希望它执行的操作。
我的主线程:
SampleThread1 sampleThread1 = new SampleThread1();
sampleThread1.setName("SAMPLE THREAD 1");
sampleThread1.run();
initializeMajorProcess ();
sampleThread1.interrupt();
示例线程 1:
class SampleThread1 extends Thread {
public void run () {
try {
System.out.println("-------- thread is starting");
Thread.sleep(5000);
System.out.println("-------- thread is done");
} catch (InterruptedException e) {
System.out.println(this.getName() + "Interrupted");
}
}
}
初始化主要进程:
private String initializeMajorProcess () {
Set<Thread> threadSet = Thread.getAllStackTraces().keySet();
Set<Thread> nonDaemonThreads = new HashSet<Thread>();
for (Thread thread : threadSet) {
if (thread.isDaemon() == false && !thread.getName().startsWith("MyScheduler")) {
System.out.println(thread.getId());
System.out.println(thread.getName());
System.out.println(thread.isAlive());
nonDaemonThreads.add(thread);
}
}
return "frps/DeveloperDashboard";
}
我只是一名有一年工作经验的初级开发人员。这是我第一次处理线程,也是我第一次在 Whosebug 上提问,所以请不要对我这么粗鲁:((
我也想问一下如何实时显示线程信息?我必须使用 WebSocket 还是必须使用 AJAX?
Thread.sleep(5000);
休眠正在执行的主线程,即您的主线程 class 因为您没有触发线程,而只是调用了 运行 方法。
因此,用 sampleThread1.start();
代替 sampleThread1.run();
。
在我们的系统中,我的任务是创建一个页面来实时显示我们系统的主要线程。
为了重新创建一个主要进程,我计划创建一个线程并让它休眠至少 5 秒。当上述线程处于睡眠状态时,我将获取所有活动线程,查看我创建的线程是否存在,然后将线程信息存储到我的 modelMap 中,该信息将传递到我的 JSP 上以显示它。
不过,当我尝试这样做时,我设法创建的测试首先等待线程完成休眠,而不是我希望它执行的操作。
我的主线程:
SampleThread1 sampleThread1 = new SampleThread1();
sampleThread1.setName("SAMPLE THREAD 1");
sampleThread1.run();
initializeMajorProcess ();
sampleThread1.interrupt();
示例线程 1:
class SampleThread1 extends Thread {
public void run () {
try {
System.out.println("-------- thread is starting");
Thread.sleep(5000);
System.out.println("-------- thread is done");
} catch (InterruptedException e) {
System.out.println(this.getName() + "Interrupted");
}
}
}
初始化主要进程:
private String initializeMajorProcess () {
Set<Thread> threadSet = Thread.getAllStackTraces().keySet();
Set<Thread> nonDaemonThreads = new HashSet<Thread>();
for (Thread thread : threadSet) {
if (thread.isDaemon() == false && !thread.getName().startsWith("MyScheduler")) {
System.out.println(thread.getId());
System.out.println(thread.getName());
System.out.println(thread.isAlive());
nonDaemonThreads.add(thread);
}
}
return "frps/DeveloperDashboard";
}
我只是一名有一年工作经验的初级开发人员。这是我第一次处理线程,也是我第一次在 Whosebug 上提问,所以请不要对我这么粗鲁:((
我也想问一下如何实时显示线程信息?我必须使用 WebSocket 还是必须使用 AJAX?
Thread.sleep(5000);
休眠正在执行的主线程,即您的主线程 class 因为您没有触发线程,而只是调用了 运行 方法。
因此,用 sampleThread1.start();
代替 sampleThread1.run();
。