我无法在线程休眠时 运行 执行任务

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();