public class SleepThread extends Thread{
@Override
public void run() {
try {
System.out.println("sleep start");
Thread.sleep(10000);
System.out.println("sleep end");
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
public class WakeThread extends Thread{
@Override
public void run() {
for(int i=0;i<10;i++){
try {
Thread.sleep(1000);
System.out.println("I am awake");
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
public class ThreadTest {
/**
* @param args
*/
public static void main(String[] args) {
Thread t1=new SleepThread();
Thread t2=new WakeThread();
t1.start();
t2.start();
}
}
打印出
sleep start
I am awake
I am awake
I am awake
I am awake
I am awake
I am awake
I am awake
I am awake
I am awake
I am awake
sleep end
最后一个I am awake 和sleep end 几乎无间隔一起出来了。
这说明sleep的时候,可以自己sleep一会,其他线程走一会,自己再接着sleep.
意味着两则可以同时进行。
分享到:
相关推荐
- 压缩包中的"易语言判断多个线程运行结束源码"文件,应包含了一个示例程序,演示了如何创建并管理多个线程,以及如何判断这些线程是否已经结束。具体代码细节可能包括线程创建、线程状态查询、子程序设计等关键...
总结来说,"2个线程同时运行实例MFC"是一个关于如何在MFC环境中创建和管理多线程的示例,涉及到线程的创建、同步和控制。通过理解这些概念和技巧,开发者可以更好地设计出高效、安全的多线程程序,以满足复杂的应用...
此时线程等待在ObjectMonitor上,直到其他线程调用了同一个对象的notify方法,将等待的线程唤醒。被唤醒的线程状态变为RUNNABLE,但只有在获得了对象锁之后,才能恢复执行。 在JVM中,Java线程状态的保存和管理是...
- **事件(Events)**:通过WaitHandle类的子类(如ManualResetEvent或AutoResetEvent)来同步线程,一个线程等待特定事件发生,另一个线程触发事件。 - **条件变量(Conditional Variables)**:允许线程在满足...
- 当线程调用一个对象的 `wait()` 方法时,它会释放对象的锁,进入等待状态,直到其他线程调用同一对象的 `notify()` 或 `notifyAll()`。 - `wait()` 会抛出 `InterruptedException`,与 `sleep()` 类似,需要妥善...
在 Java 中,多线程编程时,常见的问题是一个线程抛出 Out Of Memory(OOM)异常是否会影响其他线程的运行。本文将通过实践和分析来解答这个问题,同时探讨主线程和子线程之间的关系。 多线程和 OOM 异常 在 Java ...
synchronized可以修饰方法或代码块,确保同一时间只有一个线程可以执行特定代码。另外,wait()和notify()、notifyAll()方法用于线程间的通信,实现线程的互斥和协作。 四、线程优先级 Java线程有10个优先级,从MIN_...
在Qt框架中,QTimer和QThread是两个重要的组件,用于...总之,将QTimer放入子线程运行是一种优化策略,特别适用于定时执行耗时任务的情况。通过合理使用QThread和QTimer,我们可以构建出高效且响应迅速的Qt应用程序。
本教程将通过一个简单的示例,介绍如何在Delphi中创建并控制指定数量的线程。 首先,我们要了解Delphi中的TThread类,它是VCL(Visual Component Library)框架提供的用于实现线程的基础类。TThread提供了一系列的...
线程的礼让是指一个线程主动让出CPU资源,使其他线程有机会执行。在Java中,可以使用Thread类的yield()方法实现线程的礼让。 线程的合并是指一个线程等待另一个线程执行完毕后再继续执行。在Java中,可以使用Thread...
标题中的“多线程 小球 运行程序(eclipse工程可导入)”表明这是一个与多线程编程相关的项目,可能是用Java语言实现的,因为Eclipse是Java开发的常用集成开发环境。这个程序可能设计了一个模拟小球运动的场景,通过多...
我只想要进程的某个线程休眠一段时间的,可是用sleep()是将整个进程都休眠的,这个可能达不到,我们想要的效果了。目前我知道有三种方式: 1、usleep 这个是轻量级的,听说能可一实现线程休眠,我个人并不...
在C#编程中,多线程是一个重要的概念,它允许应用程序同时执行多个任务,从而提高效率和性能。在处理复杂的任务,比如文件传输或者UI更新时,多线程显得尤为重要。在标题提到的"四个显示线程计算结果的函数"中,这...
例如,我们可以添加两个按钮:一个用于启动线程,另一个用于停止线程。按钮的Click事件处理器是实现线程控制的关键。 对于启动线程的按钮,代码可能如下: ```csharp private Thread myThread; private bool is...
标题“易语言判断多线程是否运行结束”所指的,就是在多线程环境下,编写代码来检测一个特定线程是否已经完成了它的执行任务,即线程是否已经终止。这在等待所有线程完成、线程间同步或者资源释放等场景下非常有用。...
在计算机科学中,多线程是指一个进程中包含多个线程的并发执行。每个线程都是进程的一个执行路径。通过多线程技术,可以在同一进程内实现任务的并行处理,提高程序的运行效率和响应速度。 ##### 2.2 MFC多线程实现 ...
当线程中调用wait()方法时,当前线程会释放对象的锁,并进入等待状态,直到其他线程调用同一个对象的notify()或notifyAll()方法才能唤醒。而sleep()方法则不会释放对象锁,它仅仅是让当前线程暂停执行指定的时间。在...
4. **互斥**:互斥是一种确保任何时候只有一个线程能访问共享资源的技术。在C#中,我们通常使用`lock`关键字来实现互斥。 在C#中,实现多线程有多种方式,如`Thread`类、`Task`类以及异步编程模型(`async/await`)。...
本示例“vc中获取一个线程的状态及返回值”主要关注如何在VS2012环境下创建和控制线程,以及如何获取线程的状态和返回值。以下将详细介绍相关知识点。 1. **线程基础**: - 在多线程编程中,线程是程序执行的最小...
调用此方法时,传入一个委托(Delegate),线程池会在适当的时候执行该委托代表的方法。 2. **WaitHandle** 和 **ManualResetEvent**:为了等待所有线程池任务完成,通常我们会使用WaitHandle类的实例,如...