Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javagui中线程数的使用_Java_Multithreading_User Interface_Events - Fatal编程技术网

javagui中线程数的使用

javagui中线程数的使用,java,multithreading,user-interface,events,Java,Multithreading,User Interface,Events,因此,在我的这段代码中,我想告诉GUI禁用按钮,并在不再运行线程时弹出一个窗口(即调用的方法已完成) 为什么如果(Thread.activeCount()==0)似乎从未被调用过?这不是我为了实现我的目标而想做的吗?提前感谢您的任何意见 运行Java程序时,有许多线程正在运行(例如,主线程:)并查看)。如果要检查线程的状态,请使用该方法(请记住将线程分配给thread变量: Thread t = new Thread(new Runnable() {

因此,在我的这段代码中,我想告诉GUI禁用按钮,并在不再运行线程时弹出一个窗口(即调用的方法已完成)


为什么
如果(Thread.activeCount()==0)
似乎从未被调用过?这不是我为了实现我的目标而想做的吗?提前感谢您的任何意见

运行Java程序时,有许多线程正在运行(例如,主线程:)并查看)。如果要检查线程的状态,请使用该方法(请记住将线程分配给
thread
变量:

        Thread t = new Thread(new Runnable() 
        {
            public void run() 
            {
                FileConverter fc = new FileConverter();

            }
         });
        t.start();
        if (t.getState().equals(Thread.State.TERMINATED) ) { ... }

进一步研究您的问题,您也可以调用该方法,因为它将阻止当前线程,直到
t
完成(或直到超时)。

当您运行Java程序(例如,主线程:)并查看时,有许多线程正在运行。如果要检查线程的状态,请使用该方法(请记住将线程分配给
线程
变量:

        Thread t = new Thread(new Runnable() 
        {
            public void run() 
            {
                FileConverter fc = new FileConverter();

            }
         });
        t.start();
        if (t.getState().equals(Thread.State.TERMINATED) ) { ... }

进一步研究您的问题,您也可以调用该方法,因为它将阻止当前线程,直到
t
完成(或直到超时).

这是关于,最好将您的背景任务包装到,非常好的示例by,或by implements

这是关于,最好将您的背景任务包装到,非常好的示例by,或by implements

作为直接使用线程的替代方法,您可能希望签出和。作为使用线程的替代方法实际上,您可能想签出和。因此,在getState()方法的条件中,我会说什么?您将它与一个线程状态进行比较:如果(t1.getState().TERMINATED!=null)
,它会像…
一样吗方法对我不起作用,但是,您提供的join方法似乎正在起作用。非常感谢您的帮助!那么在getState()方法的条件中,我会说什么呢?您将它与一个线程状态进行比较:如果(t1.getState().TERMINATED!=null)
…?getState()方法对我不起作用,但是,您提供的join方法似乎起到了作用。非常感谢您的帮助!+1这是我没有考虑到的事情(这是一个可怕的错误…)使用此executor与我刚才使用的联接有什么区别?@这是一个带有executor的语法,您可以使用多线程,但使用SwingWorker最重要的是,您的GUI在后台任务期间不会冻结,所有的JC组件都是可访问的,但从另一方面来说,我必须说你们也在以可能的方式进行,但解决方法有点复杂,看这里+1这是我没有考虑到的(这是一个可怕的错误…)使用此executor与我刚才使用的联接有什么区别?@这是一个带有executor的语法,您可以使用多线程,但使用SwingWorker最重要的是,您的GUI在后台任务期间不会冻结,所有的JC组件都是可访问的,但从另一方面来说,我必须说你们也在走可能的路,但解决方法有点复杂,看这里