java - 为什么需要 Thread.start()?

标签 java multithreading thread-sleep

<分区>

当我想到一个问题时,我正在研究线程。如果我们可以像任何普通方法一样直接使用类的对象调用 run() 方法,那么为什么我们需要调用 Thread.start() 来调用run() 方法..我尝试了所示的两种方法并得到了相同的结果

第一次尝试直接调用run()方法

class Abc extends Thread
{
   public void run()
   {
      for(int i=0;i<5;i++)
      {
         System.out.println("Abc");
      }
      try
      {
          Thread.sleep(100);
      }catch(Exception e)
      {
          System.out.println("Error : "+ e);
      }
   }
}

class Xyz extends Thread
{
    public void run()
    {
       try
       {
           for(int i=0;i<5;i++)
           {
               System.out.println("Xyz");
           }
           Thread.sleep(100);
       }catch(Exception e)
       {
            System.out.println("Error : "+ e);
       }
    }
}

public class ThreadDemo 
{
    public static void main(String[] args) 
    {
        Abc ob=new Abc();
        Xyz oc=new Xyz();
        ob.run();
        oc.run();
    }
}

第二次尝试调用 Thread.start()

public class ThreadDemo 
{
    public static void main(String[] args) 
    {
        Abc ob=new Abc();
        Xyz oc=new Xyz();
        Thread t1,t2;
        t1=new Thread(ob);
        t2=new Thread(oc);
        t1.start();
        t2.start();
    }
}

最佳答案

如果您直接调用 run(),代码将在调用线程中执行。通过调用 start(),一个新线程被创建并并行执行。

关于java - 为什么需要 Thread.start()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23907118/

相关文章:

java - corrupted double-linked list error 第一次运行程序时,后续运行正常

java - 客户端使用java解密

java - OnClickListener 无法解析为类型 (Eclipse)

java - 如何为 Executors.newFixedThreadPool 设置超时并在超时后创建线程

c++ - 服务器应用程序必须向 N 个客户端发出 ping 命令。有没有办法让它多线程?

java - 神秘线程 "net_rim_cldc-2"导致性能下降

java - 动态创建 JPanel

Python线程中断休眠

java - 尝试创建稳定的游戏引擎循环

java - 如何绘制/重绘/动画 (MVC)