Java start()不是在启动线程
我已经编写了下面的示例代码来测试线程的行为。但是main没有启动线程test1执行,请告诉我这段代码有什么问题Java start()不是在启动线程,java,multithreading,Java,Multithreading,我已经编写了下面的示例代码来测试线程的行为。但是main没有启动线程test1执行,请告诉我这段代码有什么问题 class test1 implements Runnable { Thread t ; test1(String Name) { t = new Thread(Name); t.start(); } @Override public void run() { // TODO Aut
class test1 implements Runnable
{
Thread t ;
test1(String Name)
{
t = new Thread(Name);
t.start();
}
@Override
public void run() {
// TODO Auto-generated method stub
System.out.println("Entered test1 run");
}
}
public class SampleThread{
public static void main(String[] args) {
Thread r = Thread.currentThread();
System.out.println(r.getName()+" "+r.getPriority());
r.setName("MainThread");
r.setPriority(8);
test1 t1 = new test1("test1");
System.out.println("calling threads");
try
{
t1.t.join();
}
catch(Exception e)
{
e.printStackTrace();
}
}
}
更改
t=新线程(名称)代码>到t=新线程(这个,名称)代码>(在test1中)将使代码正常工作
但是你的代码仍然让人困惑。您可以通过对线程进行子分类或实现Runnable并将Runnable传递给线程来创建java线程,而您似乎试图同时(错误地)完成这两项工作
我建议您查找有关线程的指南,例如您从不将Runnable放入线程,因此其run方法永远不会运行。这是基本线程,建议您在谷歌上搜索并学习Java线程入门教程;已工作:)对象构造函数决不能允许另一个线程看到其此指针。这样做允许另一个线程看到处于不一致状态的对象。