`

main 线程与子线程同步运行

阅读更多

//先主线程循环10次后子线程循环5次  再主线程循环10次  子线程循环5次
package com.wuxifu.com;

import java.util.Stack;

public class Thread001
{
    public static String  LOCAK="LOCK";//主线程与子线程的锁
   public static void main(String[] args)
{
       MyThread myThread = new MyThread(LOCAK);
       new Thread(myThread).start();
    for (int j = 0; j <2; j++){
      synchronized (LOCAK)
    {
        
     for (int i = 0; i <10; i++)
         System.out.println("main");
 
     try
    {     LOCAK.notify();//先notify再wait
        LOCAK.wait();
    } catch (InterruptedException e)
    {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    
    }  
    }  
}

  
  
  
 
}
class MyThread  implements  Runnable
{
   
    private String LOCAK;
    public MyThread(String  lock)
    {
        this.LOCAK=lock;
    }
     @Override
     public void run()
     {
         for (int j = 0; j <2; j++)
         {
           synchronized (LOCAK)
          {
             
           for (int i = 0; i <5; i++)
             System.out.println("111");
          
           LOCAK.notify();//先notify再wait
               try
               {
                   LOCAK.wait();
               } catch (InterruptedException e)
               {
               }
    
          } 
     }       
 }
   

   
}

分享到:
评论

相关推荐

    Qt 串口,多线程(子线程处理串口信号)

    在标题“Qt 串口,多线程(子线程处理串口信号)”中,我们关注的是如何在Qt环境中利用串口通信并结合多线程技术来优化程序性能。 1. **串口通信**: - **QSerialPort模块**:Qt提供QSerialPort类,用于处理串行...

    子线程更新主线程数据

    在多线程编程中,"子线程更新主线程数据"是一个常见的需求,尤其是在UI界面交互和后台处理相结合的应用中。主线程通常负责用户界面的显示与交互,而子线程则用于执行耗时的任务,避免阻塞主线程,提供良好的用户体验...

    线程中创建子线程

    std::cout 子线程正在运行" ; } // 创建子线程的函数 void createSubThreads(int num) { for (int i = 0; i ; ++i) { std::thread subThread(childThreadFunction); subThread.join(); // 等待子线程完成 } } ...

    C#子线程执行完后通知主线程的方法

    在C#编程中,多线程是常见的并发执行方式,其中主线程通常负责应用程序的主逻辑,而子线程则可以执行一些独立的任务。当子线程完成其工作后,有时需要通知主线程以便进行下一步操作。本文将详细介绍如何在C#中实现...

    java 子线程通过观察者模式通知主线程

    子线程与主线程之间的通信方式有很多种,如使用共享变量、wait/notify机制、Future和Callable接口等。而观察者模式(Observer Pattern)则是一种设计模式,它允许一个对象的状态变化自动通知其他依赖该对象的对象。...

    多线程线程变量赋值

    在这个例子中,主线程设置了`ThreadLocal`变量的值,但每个子线程在自己的上下文中运行时,它们看到的`ThreadLocal`变量值是独立的。因此,`thread1`和`thread2`可能会打印出不同的值,因为它们拥有各自的副本。 ...

    java多线程编程 在主线程main中创建两个子线程

    自己学着编写的一个JAVA多线程程序,该程序实现的功能是:在主线程main中创建两个子线程,A和B,线程A先运行,再运行B线程,当两个子线程都运行完毕后,才运行主线程,并最终结束整个程序的运行。 希望该程序对初学...

    java多线程代码案例(创建线程,主线程,线程优先级,线程组,线程同步,线程间的通信)

    线程组是一种管理线程的方式,它可以包含多个子线程组和线程。线程组提供了一些额外的功能,如统计信息、权限控制等。通过`ThreadGroup`类可以创建和管理线程组。 5. **线程同步** 线程同步是为了防止多个线程...

    子线程循环10次,接着主线程循环100,接着又回到子线程循环10次,接着再回到主线程又循环100,如此循环50次,请写出程序。

    # 设置为守护线程,使得主程序结束时不立即终止子线程 child.setDaemon(True) # 开始子线程 child.start() # 确保子线程执行一次后再执行主线程 child.join() for _ in range(50): main_thread() child_thread()...

    Java主线程等待子线程执行完毕

    在 MainThread 中,我们首先定义了一个 CountDownLatch 对象 runningThreadNum,用于记录当前正在运行的线程数。然后,我们创建了多个 SubThread 对象,并启动它们。在所有子线程启动后,我们使用 runningThreadNum....

    Java多线程--让主线程等待所有子线程执行完毕

    ### Java多线程--让主线程等待所有子线程执行完毕 #### 核心知识点解析 在Java多线程环境中,让主线程等待所有子线程执行完毕是一个常见的需求,尤其是在处理大量数据或进行高性能计算时。这不仅有助于正确测量...

    sub-thread-access-to-the-main-thread.rar_c# 子线程_sub

    主线程通常是应用程序的入口点,而子线程则是在主线程运行时创建的额外线程。 2. **UI线程与后台线程**:在Windows桌面应用中,UI更新必须在UI线程(即主线程)中进行,因为UI控件不是线程安全的。后台线程(如子...

    Python多线程:主线程等待所有子线程结束代码

    在非交互环境中(例如,作为独立的可执行程序运行),主线程在所有子线程结束(包括守护线程)后会正常退出。 总结一下,Python多线程中,要让主线程等待所有子线程结束,可以使用以下步骤: 1. 创建线程对象并...

    Windows多线程编程

    通过合理利用Windows API提供的多线程功能,可以有效地管理线程的创建、同步以及生命周期,从而构建高效稳定的多线程应用程序。在实际开发过程中,还需要注意处理好线程间的数据同步问题,避免竞态条件和死锁等问题...

    C#线程同步AutoResetEvent

    通过这个DEMO,我们可以看到`AutoResetEvent`是如何帮助我们实现线程间的同步,确保所有子线程执行完毕后,主线程才继续执行其他业务。在实际开发中,`AutoResetEvent`常用于多线程环境中的条件等待,比如并发控制、...

    解决多线程编程中的同步互斥问题

    为了确保数据的一致性和程序的正确性,必须采取措施来实现线程之间的同步与互斥。 #### 关键段(Critical Section) 在Windows平台下,解决多线程同步互斥问题的一种常用方法是使用关键段(Critical Section)。关键...

    PB多线程实现

    一种常见的方式是创建一个新的窗口类,该窗口类在不同的线程上运行。通过调用如CreateThread或BeginThread等API函数,可以在新的线程上下文中启动这个窗口类。同时,需要处理线程同步问题,例如使用Mutex、Semaphore...

    操作系统实验(三)线程的互斥

    实验的目标是在主线程中创建两个子线程,并使得这两个子线程能够互斥地访问一个全局变量`count`。这涉及到以下步骤: 1. **创建线程**:使用`CreateThread()`函数创建两个子线程,分别执行`func1()`和`func2()`函数...

    PyQt5多线程的执行和停止

    本示例主要探讨如何在PyQt5中实现多线程的执行与停止,并通过进度条进行可视化展示。下面我们将深入理解相关知识点。 首先,了解`QThread`类是关键。`QThread`是Qt提供的线程类,它允许我们把计算密集型任务放在...

    Python+PyQT5的子线程更新UI界面的实例

    - **运行线程**:最后启动线程,让其执行 `run` 方法中定义的循环操作,并通过信号传递数据给主线程进行UI更新。 #### 四、总结 本文详细介绍了如何在Python环境下使用PyQT5框架通过子线程安全地更新UI界面的方法,...

Global site tag (gtag.js) - Google Analytics