`
conkeyn
  • 浏览: 1524504 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

线程同步通信

 
阅读更多

看传智播客张孝祥讲的一个例子。


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

package cn.itcast.heima2;

public class TraditionalThreadCommunication {

    /**
     * @param args
     */
    public static void main(String[] args) {

        final Business business = new Business();
        new Thread(new Runnable() {

            @Override
            public void run() {
                for (int i = 1; i <= 50; i++) {
                    business.sub(i);
                }
            }
        }).start();

        for (int i = 1; i <= 50; i++) {
            business.main(i);
        }
    }

}

/**
 * 经验:要用到的共同数据(包括同步锁)或同类算法(如:某个加解密算法)的若干个
 * 方法应该归在同一个类身上,这种设计正好体现了高内聚和程序的健壮性。
 * @author linzq
 *
 */
class Business {
    private boolean bShouldSub = true;

    public synchronized void sub(int i) {
        // 使用while而不使用if,是为了防止调用本方法的线程被伪唤醒
        while (!bShouldSub) {
            try {
                this.wait();
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
        for (int j = 1; j <= 10; j++) {
            System.out.println("sub thread sequence of " + j + ",loop of " + i);
        }
        bShouldSub = false;
        this.notify();
    }

    public synchronized void main(int i) {
        while (bShouldSub) {
            try {
                this.wait();
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
        for (int j = 1; j <= 100; j++) {
            System.out.println("main thread sequence of " + j + ",loop of " + i);
        }
        bShouldSub = true;
        this.notify();
    }
}

 d

分享到:
评论

相关推荐

    传智播客_张孝祥_传统线程同步通信技术

    在IT行业中,线程同步通信技术是多线程编程中的核心概念,特别是在高并发和分布式系统设计中。张孝祥老师的课程"传智播客_张孝祥_传统线程同步通信技术"深入浅出地讲解了这一主题,旨在帮助开发者理解和掌握线程间的...

    传统线程同步通信技术二

    本篇文章将深入探讨几种传统的线程同步通信技术,帮助你理解如何在并发环境中确保程序的正确性和效率。 1. **互斥量(Mutex)** 互斥量是线程同步的基本机制之一,它允许只有一个线程拥有对共享资源的访问权。当一个...

    传统线程同步通信技术一

    本文将深入探讨传统线程同步通信技术,主要包括临界区、信号量、互斥量以及事件对象。 1. **临界区**(Critical Section) 临界区是程序中用于访问共享资源的代码段。为了防止多个线程同时进入临界区,我们可以...

    Java并发之传统线程同步通信技术代码详解

    "Java并发之传统线程同步通信技术代码详解" Java并发之传统线程同步通信技术代码详解是Java编程语言中的一种重要技术,主要用于解决多线程之间的同步通信问题。在Java中,线程同步通信技术是通过wait()和notify()...

    线程同步与通信范例

    线程同步与通信是多线程编程中的关键概念,确保线程间的协调和避免数据竞争。在这个名为"线程同步与通信范例"的程序中,它通过五种不同的机制展示了线程间如何进行有效通信和同步:事件、全局变量、临界区、互斥量和...

    电信设备-一种基于延时修正的多线程套接字同步通信接入方法.zip

    综上所述,该技术方案旨在通过多线程同步通信和延时修正技术,优化电信设备的网络接入性能,提高服务质量和用户满意度。这种方法对于处理大规模并发连接、保持数据完整性以及在网络环境变化时保持通信稳定性具有重要...

    进程线程通信,线程同步,异步,进程通信经典进程间通信.7z

    在计算机科学中,进程线程通信、线程同步与异步以及进程间的通信是操作系统核心概念,对于理解和优化多任务并行处理至关重要。这些概念在软件开发,尤其是并发编程领域中占据着举足轻重的地位。 首先,让我们来探讨...

    Java多线程与并发库高级应用视频教程22集

    资源名称:Java多线程与并发库高级应用视频教程22集资源目录:【】01传统线程技术回顾【】02传统定时器技术回顾【】03传统线程互斥技术【】04传统线程同步通信技术【】04传统线程同步通信技术_分割纪录【】05线程...

    vc++ multithread多线程教程---线程通信--利用事件对象,线程同步--使用信号量,线程同步--使用互斥量,线程同步--使用临界区

    本教程将深入探讨四种常见的线程同步机制:事件对象、信号量、互斥量以及临界区,帮助开发者理解和掌握如何在VC++中安全地实现多线程通信。 一、事件对象 事件对象是Windows API中用于线程间通信的一种同步机制。它...

    多线程之间的线程通信

    "多线程之间的线程通信"是确保多个线程协同工作、避免数据不一致性和提高程序效率的关键概念。在本话题中,我们将深入探讨线程通信的原理、方法,以及潜在的危险。 首先,线程通信是指在一个进程中,不同的线程之间...

    MFC线程间通信

    最后,线程同步法是一种更高级的线程间通信方式。MFC提供了各种同步对象,如事件对象(CEvent)、互斥量(CMutex)、信号量(CSemaphore)等。这些对象可以用来控制线程的执行顺序,确保关键资源的独占访问。例如,...

    Qt线程之间通信、线程和进程之间通信实例

    3. `QMutex`和`QWaitCondition`:用于线程同步,防止数据竞争。`QMutex`用于保护共享资源,`QWaitCondition`用于线程间的等待和唤醒。 4. `QSemaphore`:控制对资源的并发访问数量,用于线程之间的资源调度。 二、...

    多线程同步和通讯完整示例

    在编程领域,尤其是在Java这样的多线程环境中,理解和掌握多线程同步与通讯至关重要。本文将深入探讨这些概念,以及如何使用synchronized关键字、wait-notify机制和Lock接口来实现线程间的同步与通讯。 首先,多...

    Linux系统中进程和线程的通信方式总结

    为了实现进程和线程间的高效通信,Linux提供了多种机制,这些机制可以分为进程通信(IPC)和线程同步通信。 首先,让我们探讨Linux系统中的进程通信方式。Linux支持在同一主机上以及网络主机间进行进程通信。 在...

    线程同步小例子

    在这个“线程同步小例子”中,可能包含创建和管理线程、使用上述同步机制以及处理线程间的通信等方面的内容。通过分析源代码,我们可以看到如何在实际程序中应用这些同步机制,如何避免数据竞争,以及如何在多线程...

    java线程同步及通信

    Java线程同步与通信是多线程编程中的关键概念,用于解决并发访问共享资源时可能出现的数据不一致性和竞态条件问题。以下将详细介绍这两个主题,以及如何通过代码示例进行演示。 1. **线程同步**: 线程同步是确保...

    多线程的批量线程同步解决方案

    "多线程的批量线程同步解决方案"这个标题暗示我们探讨的是如何在多线程环境下有效地管理和同步多个任务,确保数据一致性与程序正确性。下面将详细阐述相关知识点。 一、多线程基础 多线程是指在一个进程中同时执行...

    多线程及线程同步

    然而,多线程环境下也带来了一些问题,尤其是资源竞争和数据一致性问题,这些问题需要通过线程同步机制来解决。本文将详细介绍如何通过临界区、互斥内核对象、事件内核对象和信号量内核对象来实现线程同步。 1. ...

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

    本文将深入探讨Java多线程中的关键知识点,包括创建线程、主线程、线程优先级、线程组、线程同步以及线程间的通信。 1. **创建线程** 在Java中,可以通过两种方式创建线程:继承`Thread`类或实现`Runnable`接口。...

Global site tag (gtag.js) - Google Analytics