爪哇2博客
爪哇2博客

我们可以直接调用run()方法来启动新线程吗

不,您不能直接调用run方法来启动线程。您需要调用start方法来创建一个新线程。
如果直接调用run方法,它将成功’创建一个新线程,它将与main在同一堆栈中。
让我们借助示例来理解:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
 
组织.Arpit.爪哇2blog;
自定义线程 延伸 线 {
 
上市 虚空 () {
  对于 (整型 i = 0; i < 5; i++) {
   尝试 {
    线.睡觉(300);
   } 抓住 (InterruptedException e) {
 
    e.printStackTrace();
   }
   系统..打印(“线程正在运行:”+i);
  }
 
}
 
}
 
上市 StartThreadAgainMain {
 
上市 静态的 虚空 主要([] args) {
  自定义线程 ct1 = 自定义线程();
  自定义线程 ct2 = 自定义线程();
  ct1.();
  ct2.();
 
}
 
}
 

在程序上方运行时,将获得以下输出:
1
2
3
4
5
6
7
8
9
10
11
12
 
线 跑步 :0
线 跑步 :1
线 跑步 :2
线 跑步 :3
线 跑步 :4
线 跑步 :0
线 跑步 :1
线 跑步 :2
线 跑步 :3
线 跑步 :4
 

如您所见,当我们直接调用run方法时,它并没有创建新线程。

如果在上面的示例中使用start而不是run:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
 
组织.Arpit.爪哇2blog;
自定义线程 延伸 线 {
 
上市 虚空 () {
  对于 (整型 i = 0; i < 5; i++) {
   尝试 {
    线.睡觉(300);
   } 抓住 (InterruptedException e) {
 
    e.printStackTrace();
   }
   系统..打印(“线程正在运行:”+i);
  }
 
}
 
}
 
上市 StartThreadAgainMain {
 
上市 静态的 虚空 主要([] args) {
  自定义线程 ct1 = 自定义线程();
  自定义线程 ct2 = 自定义线程();
  ct1.开始();
  ct2.开始();
 
}
 
}
 

在程序上方运行时,将获得以下输出:

线程在运行:0
线程在运行:0
线程正在运行:1
线程正在运行:1
线程正在运行:2
线程正在运行:2
线程正在运行:3
线程正在运行:3
线程正在运行:4
线程正在运行:4

您不能直接调用run方法创建线程,而需要调用start方法创建新线程。

你可以经历 面向初学者和经验丰富的Java核心面试问题 有关更多此类问题。


导入联系人

您可能还喜欢:

分享这个

作者

关注作者

相关文章

  • 获取Java中的线程ID
    9月30日

    获取Java中的线程ID

    在本文中,我们将学习获取Java中正在运行的线程的线程ID。 Id是在线程创建时生成的唯一正数。该ID在线程的生存期内保持不变。线程终止时,其ID可用于引用另一个线程,但是[…]

  • 爪哇中的ArrayBlockingQueue
    9月19日

    爪哇中的ArrayBlockingQueue

    在本文中,我们将了解Java并发队列BlockingQueue。然后我们将深入其中’其中之一的实现ArrayBlockingQueue。什么是BlockingQueue 阻塞队列接口是在Java 5中并发API下引入的,它表示一个线程安全的队列,可以在其中添加和删除元素。我们可以有 […]

  • 将Java程序延迟几秒钟
    12月11日

    将Java程序延迟几秒钟

    在这篇文章中,我们将看到如何将Java程序延迟几秒钟。在很多情况下,我们需要等待其他任务完成,因此我们需要延迟Java程序。有多种方法可以延迟Java程序的执行。使用Thread.sleep 睡觉方法会使当前线程暂停[…]

  • 29 May

    如何使用Java中的线程打印偶数和奇数

    在本文中,我们将看到如何使用Java中的线程打印偶数和奇数。另请参见:如何在Java中使用3个线程打印序列问题您将获得两个线程。您需要使用一个线程打印奇数,而使用另一线程打印偶数。您需要以自然顺序打印[…]

  • 爪哇中的wait(),notify()和notifyAll()
    10月22日

    为什么在对象类中使用wait(),notify()和notifyAll()方法

    在这篇文章中,我们将看到为什么wait(),notify()和notifyAll()方法在对象类中而不在线程类中。这是最常问到的Java多线程面试问题之一。您可能知道wait(),notify()和notifyAll()方法在Object类中,您知道相同的原因吗?让’s […]

  • 爪哇中的自定义BlockingQueue
    10月16日

    爪哇中的自定义BlockingQueue实现

    在本文中,我们将看到如何创建自己的自定义BlockingQueue。这是最常被问到的Java面试问题之一。您需要实现自己的BlockingQueue。这个问题有助于面试官对多线程概念有所了解。这是BlockingQueue的简单实现。我们将使用数组将元素存储在[…]

发表评论

您的电子邮件地址不会被公开。 必需的地方已做标记 *

订阅我们的新闻

获取质量教程到您的收件箱。现在订阅。


成为朋友

©2020 爪哇2博客