`
lhx1026
  • 浏览: 307196 次
  • 性别: Icon_minigender_2
  • 来自: 广州
社区版块
存档分类
最新评论

Thread.sleep()的一点问题

阅读更多


问题3:p.sleep(
1000)是指线程p睡眠吧,但为什么main中的语句也进入睡眠状态

(表达的不是很好。。换句话说:假如让线程p睡眠10秒,为什么p.sleep(
10000)后面的一些输出语句

也要在10秒后输出?main也是一个线程,为什么它也进入了睡眠)

在A的run方法中加入
System.out.println("exiting run");
能加深你的理解。


问题1: p.sleep(1000);其实这个sleep是Thread的静态方法,在指定的毫秒数内让当前正在执行的线程休眠(暂停执行)
由于p线程里面没有执行东西,所以很快就结束了。这里睡眠的其实是main线程。
既然p结束了,当然就没有被阻塞,打印:
exiting run
false
false

如果注释掉p.sleep(1000);由于调用了p.interrupt();这时p线程当然存在,打印
true
true
exiting run

问题2
注释sleep的话,打印:
true
true
exiting run
这个好理解。p线程被阻塞了。当然还存活。最后又被调度了。所以有exiting run打印

不注释sleep的话打印:
exiting run
false
false
也是main线程睡眠

分享到:
评论

相关推荐

    python time.sleep()是睡眠线程还是进程

    根据给定文件的标题,“python time.sleep() 是睡眠线程还是进程”,我们可以理解为这个问题是在询问 `time.sleep()` 函数是会让整个进程暂停,还是仅仅阻塞当前线程。 **解答:** `time.sleep()` 实际上是阻塞当前...

    控制台模拟时钟

    在Java编程语言中,我们可以利用`while`循环和`Thread.sleep()`方法来模拟一个控制台时钟。这个控制台时钟会在终端或者命令行界面显示时间的流逝,尽管没有图形用户界面,但仍然能实现基本的计时功能。下面我们将...

    Java如何中断一个正在运行的线程[整理].pdf

    首先,我们要明确一点:Java中直接停止线程的方法,如`Thread.stop`,是不安全的并且不推荐使用。这是因为`Thread.stop`可能导致数据不一致性和资源泄露,由于它的潜在危害,未来可能会被完全移除。因此,开发人员...

    多线程之06三种中止线程的方法比较.docx

    Thread.sleep(2000); // 休眠2秒,确保i变量自增成功 thread.stop(); // 中止线程 while (thread.isAlive()) {} // 确保线程已经终止 thread.print(); // 输出结果 } public static class StopThread extends...

    VB.NET延时程序

    首先,最基础的延时函数是`System.Threading.Thread.Sleep()`。这个方法可以简单地让当前线程进入等待状态,指定的毫秒数后才会继续执行。例如: ```vb.net Dim delayTime As Integer = 1000 ' 1秒 Thread.Sleep...

    一个使用thread类的windows应用实例

    此外,`Thread.Join`方法用于等待一个线程结束,而`Thread.Sleep`可以暂停当前线程一段时间。`Thread.IsAlive`属性可用来检查线程是否还在运行。还有`Thread.Priority`属性,可以设置线程的优先级,虽然不建议频繁...

    线程笔记(多线程,异常)

    2. **Thread.Sleep方法**:`Thread.Sleep()`是一个静态方法,可以直接通过`Thread.Sleep(dueTime)`调用来让当前线程暂停执行指定的时间。不再需要通过实例化`Thread`对象来调用。 3. **TryEnter方法**:`Monitor....

    JavaThread中断机制共11页.pdf.zip

    3. **`Thread.sleep()`, `Object.wait()`, `Thread.join()`** 这些方法在遇到中断时会立即抛出`InterruptedException`,从而让线程退出阻塞状态。因此,在使用这些方法时,建议总是检查中断状态,这样可以优雅地...

    python 线程的暂停, 恢复, 退出详解及实例

    ### Python线程的暂停、恢复与退出详解 在Python中,多线程是通过`threading`模块来实现的。然而,在默认情况下,该模块...此外,在实际开发中还应考虑到线程间的同步问题,避免因线程竞争而导致的数据不一致等问题。

    Java有两种实现多线程的方式:通过Runnable接口、通过Thread直接实现,请掌握这两种实现方式,并编写示例程序。

    缺点是相对于直接继承`Thread`类,这种方式稍微复杂一点。 **示例程序** ```java // MyRunnable.java package experiment3; public class MyRunnable implements Runnable { private String name; public ...

    Java并发编程线程入门简介[借鉴].pdf

    1. `Thread.sleep(long millis)`:挂起当前线程一段时间,释放CPU资源。但需要注意,`sleep()`可能会被中断,因此在使用时应处理`InterruptedException`。 2. `interrupt()`:中断线程,通知其停止当前操作。被中断...

    Java多线程--等待所有子线程执行完的五种方法.docx

    尽管不推荐,但可以通过`Thread.sleep()`方法让主线程休眠一段时间来等待子线程。这种方法的问题在于,睡眠时间必须预估,且不准确,可能导致主线程提前唤醒或过度等待。 ### 方法二:`Thread.join()`方法 `Thread....

    Java并发中的线程安全性

    Thread.sleep((long) (Math.random() * 100)); } catch (InterruptedException e) {} return value; } } ``` 这个`UnsafeUniqueInteger`类包含了一个`getNext()`方法,该方法的目的是返回一个从1到n的唯一整数...

    .NET多线程编程教程,_NET多线程编程实例

    4.3 Thread.Sleep:暂停当前线程执行。 4.4 Thread.Abort:强制终止线程(不推荐,可能导致不稳定)。 4.5 ThreadPool.QueueUserWorkItem:线程池中的线程调度。 五、异步编程 5.1 BeginInvoke/EndInvoke:委托的...

    C#单线程与多线程实例

    Thread.Sleep(2000); // 模拟耗时操作 Console.WriteLine("子线程结束执行"); } } ``` 三、单线程与多线程的区别 1. **资源利用率**:多线程可以更好地利用多核处理器,提高CPU的使用率,而单线程则无法实现这...

    多线程小例子

    这两个文件的代码可能会演示如何在线程之间共享数据,如何使用`join()`方法等待其他线程结束,或者如何通过`Thread.sleep()`方法控制线程的执行顺序。 在实际应用中,多线程广泛用于处理网络请求、UI更新、定时任务...

    C#实现程序等待延迟执行的方法

    在C#编程中,有时我们需要让程序在执行到某一点时暂停一段时间,然后再继续执行后续的代码,这种功能称为程序等待或延迟执行。这在各种场景下都很常见,比如模拟用户交互、避免过于频繁的网络请求等。在C#中,我们...

    java实现监视任务的进度条.zip

    Thread.sleep(100); // 模拟耗时操作 publish(i); } return null; } @Override protected void process(List<Integer> chunks) { int progress = chunks.get(chunks.size() - 1); progressBar.setValue...

    Java interrupt()方法使用注意_动力节点Java学院整理

    此外,某些Java API方法(如`Thread.sleep()`, `Socket.accept()`, `InputStream.read()`, `FileInputStream.read()`等)会检查中断状态并抛出`InterruptedException`。当这些方法抛出异常时,通常意味着线程已经被...

Global site tag (gtag.js) - Google Analytics