Java程序停留在特定的线程上

时间:2014-05-10 10:34:19

标签: java multithreading

我正在尝试创建两个都具有无限循环且应该相互切换的线程。问题是我永远陷入了第一个线程,并且没有发生上下文切换。我的错是什么? 我正在使用java8和Eclipse Juno。

这是'主'类:

public class Main {

    /**
     * @param args
     */
    public static void main(String[] args) 
    {

        test1 t = new test1();
        test2 t2 = new test2();
        t.run();
        t2.run();

        while(true)
        {
            System.out.println("text from main");
            try {
                Thread.sleep(100);
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }


    }

}

这是'test1'类:

public class test1 implements Runnable {

    public void run() 
    {
        while(true)
        {
            System.out.println("text from thread");
            try {
                Thread.sleep(10000);
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }

    }

}

这是'test2'类:

public class test2 implements Runnable {

    public void run() 
    {
        while(true)
        {
            System.out.println("text from thread2");
            try {
                Thread.sleep(100);
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }

    }

}

2 个答案:

答案 0 :(得分:3)

正确的做法是

Thread t = new Thread(new test1());
Thread t2 = new Thread(new test2());
t.start();
t2.start();

干杯, 丹尼尔

答案 1 :(得分:0)

添加以前的答案:发表类似

的陈述

线程t =新线程(new test1());  t.run();

这里你只是调用runnable对象的run方法 - (在线程对象初始化步骤中关联,即第一个语句)。所以, 要开始一个新线程,你必须使用 t.start();