Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.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
检索java中已生成线程的列表_Java_Multithreading - Fatal编程技术网

检索java中已生成线程的列表

检索java中已生成线程的列表,java,multithreading,Java,Multithreading,在java中,是否有一些API可以帮助检索已产生的线程,我试图准备一些示例程序,通过列出已产生的线程来学习并清楚地看到已产生的线程,但无法做到。 我还有一个疑问,线程一旦屈服,是否会再次运行,或者从停止点开始运行。根据我的观察,它从相同的stacktrace开始,因为run没有被反复调用。对吗? 屈服使线程状态变为可运行,但它可以与处于可运行状态的其他线程区分开来 或者任何其他明确说明线程的程序。我也正在制作样品 public class ThreadYieldDemo implements R

在java中,是否有一些API可以帮助检索已产生的线程,我试图准备一些示例程序,通过列出已产生的线程来学习并清楚地看到已产生的线程,但无法做到。 我还有一个疑问,线程一旦屈服,是否会再次运行,或者从停止点开始运行。根据我的观察,它从相同的stacktrace开始,因为run没有被反复调用。对吗? 屈服使线程状态变为可运行,但它可以与处于可运行状态的其他线程区分开来

或者任何其他明确说明线程的程序。我也正在制作样品

public class ThreadYieldDemo implements Runnable {

    Thread t;

    ThreadYieldDemo(String str) throws InterruptedException {

        t = new Thread(this, str);
        System.out.println(" State = "+t.getState()+" "+str);
        t.start();
        System.out.println(" State-1 = "+t.getState()+" "+str);
    }

    public void run() {
        System.out.println("Entry = "+Thread.currentThread().getName()+"  State = "+Thread.currentThread().getState());
        Random random = new Random();
        int next = random.nextInt(10);
        if(next%2==0)
        {
            System.out.println(Thread.currentThread().getName());
            System.out.println("In: "+Thread.currentThread().getState());

        }
        else
        {
            System.out.println(Thread.currentThread().getName()+" yielded...");
            Thread.yield();
            try {
                Thread.sleep(3000);
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

            System.out.println("yield = "+Thread.currentThread().getState());
        }   
    }

    public static void main(String[] args) throws InterruptedException {
        new ThreadYieldDemo("Thread 1");
        new ThreadYieldDemo("Thread 2");
        new ThreadYieldDemo("Thread 3");
        new ThreadYieldDemo("Thread 4");
        new ThreadYieldDemo("Thread 5");
    }
} 

在代码中不能执行此操作


但您可以使用或探查器,它可能会向您显示更多详细信息。但我仍然认为它不会显示线程是否已生成…

您可以设置断点并查看IDE中的线程吗?它告诉你什么了吗?