我正在尝试创建两个都具有无限循环且应该相互切换的线程。问题是我永远陷入了第一个线程,并且没有发生上下文切换。我的错是什么? 我正在使用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();
}
}
}
}
答案 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();