当前位置: 首页 > 面试题库 >

为什么我们不能在Thread对象的同一实例上两次调用start方法?

督辉
2023-03-14
问题内容

我正在阅读有关线程的文章,发现我们不能在同一线程实例上两次调用start方法。但我不知道相同的确切原因。那么为什么我们不能两次或更多次呢?


问题答案:

我认为Thread对象是实际运行上下文的“句柄”。如果允许创建与同一个java.lang.Thread关联的许多并发执行,那么您期望getStackTrace()和getState()方法返回什么?

我想Thread类本可以设计为允许产生多个正在运行的上下文,但是它的API不太简单和简洁。



 类似资料:
  • 我知道string1将包含一个空字符串。我的问题是为什么像下面这样两次调用nextLine方法会出现错误:

  • 这是另一个非常经典的 java 多线程面试问题,而且在面试中会经常被问到。很简单,但是很多人都会答不上来! new 一个 Thread,线程进入了新建状态。调用 start() 方法,会启动一个线程并使线程进入了就绪状态,当分配到时间片后就可以开始运行了。 start() 会执行线程的相应准备工作,然后自动执行 run() 方法的内容,这是真正的多线程工作。 而直接执行 run() 方法,会把 r

  • 问题内容: 我明白: 由于抽象类本身并不是什么,例如车辆,我们想要创建一个具体实现的对象,例如Car,Bike等。 对象链期间将调用抽象类的构造函数。 我们永远不能直接创建抽象类的对象,即使它包含构造函数并且所有方法都已实现。 但是从编译器的角度来看,Java为什么要强制执行这些规则? 问题答案: 这不是技术限制,而是(如您所指出的)逻辑上的限制。Java(和许多其他语言)执行各种规则不是因为它们

  • 问题内容: 我正在尝试使用方法两次读取给定文件的内容。奇怪的是,当我第二次调用它时,似乎没有将文件内容作为字符串返回? 这是代码 当然我知道这不是最有效或最好的方法,这不是重点。关键是,为什么我不能调用两次?我需要重置文件句柄吗?或者关闭/重新打开文件以执行此操作? 问题答案: 调用read()将读取整个文件,并将读取的游标留在文件的末尾(仅读取其他内容)。如果你希望一次阅读一定数量的行,则可以使

  • 问题内容: 我想知道如果在同一个对象上同步两次,在Java中是否会出现任何奇怪的行为? 场景如下 两种方法都使用该对象并对其进行同步。当第一个方法调用第二个方法时,它会被锁定而停止吗? 我不这么认为,因为它是同一个线程,但是我不确定是否可能会出现其他任何奇怪的结果。 问题答案: 同步块使用 可重入 锁,这意味着如果线程已经持有该锁,则它可以重新获取它而不会出现问题。因此,您的代码将按预期工作。 请

  • 问题内容: 我越来越。我提到了这个问题,它解决了我的问题。第一个答案是 我的问题是为什么我们需要在同一个对象广告上进行同步? 据我的理解,当我们说 我们锁定了对象someObject,然后对其调用了wait()。 现在,另一个线程如何才能锁定同一对象以在其上调用notify()? 我想念什么? 问题答案: 为什么也需要锁? 想象一下这种情况: 现在想象一下其他地方没有任何锁定: 乍一看,整个声音总