`

两个线程交替执行

    博客分类:
  • java
阅读更多

 

public class Test {
 private Object obj=new Object();
 boolean flg;
 

 public static void main(String[] args) {
  
  Test t=new Test();
  ThreadA a=t.new ThreadA();
  ThreadB b=t.new ThreadB();
  a.start();
  b.start();
  
 }
 
 
 class ThreadA extends Thread{

  public void run() {
   while(true){
   synchronized(obj){
    try {
     if(flg){
      obj.wait();
     }
     
    } catch (InterruptedException e) {
     e.printStackTrace();
    }
    System.out.println("a");
    flg=true;
    obj.notify();
   }
  }
  }
  
 }
 
 class ThreadB extends Thread{

  public void run() {
   while(true){
   synchronized(obj){
    try {
     if(!flg){
      obj.wait();
     }
    } catch (InterruptedException e) {
     e.printStackTrace();
    }
    System.out.println("b");
    flg=false;
    obj.notify();
   }
  }
  }
 }

}

分享到:
评论

相关推荐

    C# 多线程互斥 两个线程交替工作

    对于两个线程交替工作,一个常见的应用场景是控制两个线程按照一定的顺序执行,比如线程A执行一次,然后线程B执行一次,如此循环。以下是一种可能的实现方法: 1. 使用`ManualResetEvent`或`AutoResetEvent`对象...

    python 实现两个线程交替执行

    我就废话不多说,直接看代码吧! import threading import time def a(): while True: lockb.acquire() print('a') locka.release() time.sleep(0.5) def b(): while True: locka.acquire() ... lo

    JAVA线程高级-线程按序交替执行

    - `Exchanger`则允许两个线程交换数据,每次只有一个线程可以完成交换,从而实现交替执行。 4. **线程间的通信**: - `wait()`, `notify()`, `notifyAll()`是Object类的方法,用于线程间的通信。一个线程调用`...

    iOS-常驻线程之线程循环调用(两个线程循环交替调用)

    例如,我们可以创建两个串行队列,分别代表两个线程,然后定义一个定时源,让它们交替执行任务。 ```swift let queue1 = DispatchQueue(label: "thread1", qos: .background, attributes: .concurrent) let queue2 ...

    线程的编写

    一个小的关于进程的编写,可能不是很完善,还需在升入理解

    计算机操作系统实验_创建GeekOS内核线程.pdf

    在这个实验中,我们自行设计了一个个性化的内核线程,实现了两个线程交替执行,产生“心跳”的动态效果。这个实验可以帮助我们了解内核线程的灵活性和可扩展性。 三、实验过程及结果 1. 创建一个线程,实现从键盘...

    C# 多线程同步、异步_AutoResetEvent用法

    例如,如果希望两个线程交替执行,可以在每个线程执行完后调用`Set()`;若要让一个线程等待另一个完成后再执行,只需在第二个线程中调用`WaitOne()`。 ### 六、在VS2008中的应用 在Visual Studio 2008中,创建多...

    两线程交替运行demo

    1. **线程同步**:为了实现线程交替执行,通常需要使用同步机制,比如互斥量(mutex)、条件变量(condition variable)、信号量(semaphore)等。在本例中,可能会使用互斥量来确保只有一个线程在任何时候执行打印...

    多线程JAVA

    这样可以实现两个线程交替执行,即交替绘制正方形和圆形的效果。 9. **异常处理**:在调用 `sleep()` 方法时,我们使用了 `try-catch` 块来捕获可能抛出的 `InterruptedException`,并确保线程不会因此异常而终止。...

    C#多线程互斥,两个线程交替工作

    本篇将深入探讨如何在C#中实现两个线程交替工作,确保线程安全。 首先,让我们了解什么是线程互斥。互斥是指在同一时间只允许一个线程访问共享资源,其他试图访问该资源的线程必须等待。在C#中,我们可以使用`Mutex...

    Linux多线程编程.doc

    在这个例子中,主函数创建了一个新的线程`myfirstthread()`,两个线程交替执行,展示了多线程的基本用法。 在实际开发中,还需要考虑线程同步和通信问题,例如互斥锁(`pthread_mutex_t`)、条件变量(`pthread_...

    线程同步解析

    因此,即使两个线程交替执行,`age`的值也会按照预期进行更新,不会发生数据竞争。 然而,如果在多线程环境下频繁使用`synchronized`,可能会导致性能下降,因为线程之间需要不断地请求和释放锁。这时,可以考虑...

    linux下C语言多线程编程实例.docx

    在本例中,`sleep(2)`和`sleep(3)`使得两个线程交替执行,模拟并发情况,但请注意,真实环境中线程调度不可预测,不保证睡眠时间一定有效。 `pthread_join()`函数用于等待指定线程结束,`pthread_join(thread[i], ...

    C++多线程编程.pdf

    在提供的示例中,`Fun`函数是新线程的入口点,`main`函数创建了`Fun`线程,并且两个线程交替执行。为了控制执行节奏,可以使用`Sleep`函数暂停线程的执行,参数表示暂停的时间(以毫秒计)。 在多线程环境中,输出...

    多线程详解

    从输出结果可以看出,两个线程交替执行,这正是多线程并发执行的特点之一。 #### 四、一些常见问题 在实际开发中,关于Java线程可能会遇到的一些常见问题包括但不限于: - **线程安全**:在多线程环境中,多个...

    Java语言基础入门教程 Java开发编程基础课程 第14章 线程 共22页.pptx

    - 输出结果展示了两个线程交替执行的情况,说明线程间能够相互切换。 #### 总结 通过本章的学习,读者应该对Java中的线程有了基本的认识,并掌握了如何创建和控制线程的基础方法。线程作为Java并发编程的重要组成...

    mythread_test.rar_qt thread_run

    这个项目可能用于演示如何在QT应用程序中创建和控制线程,特别是让两个线程交替执行。 描述中的"自己创建线程程序,线程运行函数为run()"表明我们要创建一个自定义线程类,继承自QT的`QThread`类。在QT中,每个...

    两个串口多线程通信

    1. **初始化线程**:创建两个线程,每个线程负责一个串口的读写。可以使用各种编程语言提供的线程库,例如Java的`Thread`类,Python的`threading`模块,或者C++的`std::thread`。 2. **串口配置**:在每个线程启动...

Global site tag (gtag.js) - Google Analytics