start()没有启动一个线程

时间:2018-03-10 17:34:25

标签: java multithreading

我在下面写了示例代码来测试线程的行为。但是主要是没有启动线程test1执行,请让我知道这个代码有什么问题

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();
        }
    }
}

1 个答案:

答案 0 :(得分:0)

t = new Thread(Name);更改为t = new Thread(this, Name);(在test1中)会使您的代码正常工作。

但你的代码仍然令人困惑。您可以通过对Thread进行子类化或实现Runnable并将runnable传递给线程来创建java线程,并且您似乎尝试同时(错误地)同时执行这两个操作。

我建议您查看有关https://www.tutorialspoint.com/java/java_multithreading.htm

等主题的指南