`
Franciswmf
  • 浏览: 801013 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

多线程数据同步之synchronized同步方法-多线程访问临界资源

 
阅读更多
package com.tools;
/**
 * 同步方法处理多线程共用资源的问题
 * @author Administrator
 *
 */
class TicketSouce implements Runnable
{
    //票的总数
    private int ticket=99;
    public void run()
    {
        for(int i=1;i<200;i++)//时间
        {
            try {
                //休眠1秒中,为了使效果更明显,否则可能出不了效果
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            this.sale();
        }
    }
    public synchronized void sale()
    {
            if(ticket>0)
            {
                System.out.println(Thread.currentThread().getName()+"号窗口卖出"+this.ticket--+"号票");
            }
    }
}
public class Test {
    public static void main(String args[])
    {
        TicketSouce mt=new TicketSouce();
        //基于火车票创建10个窗口
        new Thread(mt,"a").start();
        new Thread(mt,"b").start();
        new Thread(mt,"c").start();
        new Thread(mt,"d").start();
        new Thread(mt,"e").start();
        new Thread(mt,"f").start();
        new Thread(mt,"g").start();
        new Thread(mt,"h").start();
        new Thread(mt,"i").start();
        new Thread(mt,"j").start();
    } 

} 
分享到:
评论

相关推荐

    NET多线程同步方法详解

    .NET中的多线程同步是确保在并发环境下多个线程安全访问共享资源的关键技术。本文将深入探讨.NET框架中实现线程同步的多种方法。 首先,我们来看自由锁(InterLocked)。自由锁主要通过Interlocked类提供的静态方法来...

    Java多线程的临界资源.pdf

    "Java多线程的临界资源" ...Java 多线程的临界资源问题是多线程编程中一个非常重要的问题,需要在设计和实现时充分考虑线程间的关系和资源的访问,并使用合适的方法和工具来确保线程安全地访问和修改共享资源。

    线程同步面试题深入解析

    线程同步是多线程编程中的关键概念,用于解决并发执行时可能出现的数据竞争问题,确保对共享资源的正确访问和管理。在Java中,线程同步主要通过`synchronized`关键字来实现,防止多个线程同时访问临界区,以避免出现...

    JNI 多线程同步机制的源码实现

    通过上述方法,我们可以在JNI环境中实现多线程同步,确保数据的一致性和线程安全。这在处理底层操作或优化性能时非常有用,尤其是在涉及到大量计算或I/O操作的场景下。理解和掌握JNI的多线程同步机制对于Java开发者...

    Java多线程 之 临界区、ThreadLocal.docx

    总结来说,Java中的临界区通过`synchronized`关键字或Lock对象来保证多线程环境下的数据一致性,而ThreadLocal则通过为每个线程提供变量的独立副本,避免了共享资源的并发问题。在实际编程中,开发者需要根据具体...

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

    线程同步是多线程编程中的重要概念,用于控制不同线程间的执行顺序和访问共享资源的方式,防止竞态条件和死锁的发生。常见的线程同步机制包括: 1. **互斥量(Mutex)**:一种简单的同步机制,一次只有一个线程能获取...

    Java多线程同步机制在售票系统的实现

    Java的多线程同步机制为解决多线程环境下的数据一致性问题提供了有效的解决方案。在实际开发中,合理地运用这些机制能够显著提升程序的稳定性和安全性。尤其是在像售票系统这样的应用场景中,正确地使用同步机制可以...

    Java使用synchronized修饰方法来同步线程的实例演示

    在Java编程语言中,synchronized关键字用于实现线程同步,以确保多线程环境下的数据一致性。它主要用于控制对共享资源的并发访问,防止多个线程同时进入临界区,可能导致数据不一致或竞态条件的问题。本文将深入探讨...

    java 多线程编程实战指南(核心 + 设计模式 完整版)

    - **互斥与同步**:通过`synchronized`关键字实现临界区的互斥访问,防止数据竞争。 - **死锁**:了解死锁的概念、产生条件及避免策略,如银行家算法。 - **线程间通信**:`wait()`, `notify()` 和 `notifyAll()`...

    实例讲述线程的同步互斥

    线程的同步互斥是多线程编程中的关键概念,主要用来解决并发执行时的数据安全问题。在Java、C++、Python等支持多线程的编程语言中,线程同步和互斥是确保程序正确性和数据一致性的重要手段。 线程是指在单一进程内...

    数据访问同步锁

    数据访问同步锁是一种在多线程编程中至关重要的机制,用于确保多个线程在并发执行时对共享资源的正确访问和同步。在Java等编程语言中,数据访问同步锁主要通过`synchronized`关键字来实现,它能有效地防止数据竞争和...

    多线程技术大全.电子书

    9. **线程安全的数据结构**:某些数据结构(如Java的ConcurrentHashMap)设计为线程安全,可以在多线程环境下直接使用,无需额外的同步措施。 10. **线程局部存储**:线程局部变量只对创建它的线程可见,这样可以在...

    pb多线程实现的例程

    在编程领域,多线程是一种常见且重要的技术,它允许程序同时执行多个任务,从而提高系统资源利用率和程序性能。本例程“pb多线程实现”旨在展示如何在编程中利用多线程来实现并发操作。解压密码为"hur.cn",这可能是...

    多线程编程指南

    线程同步是多线程编程中最关键的部分之一,用于防止数据竞争和死锁等问题。 ##### 4.1 同步工具 本节介绍了常用的同步工具及其使用方法: - **4.1.1 原子操作**:提供原子读写操作以简化同步逻辑。 - **4.1.2 内存...

    java Thread & synchronized & concurrent 线程、同步、并发

    线程允许程序同时执行多个任务,而同步是控制多个线程对共享资源的访问,以避免数据不一致。并发则涉及到如何有效地管理多个线程,以最大化系统资源的利用率。 线程是操作系统分配CPU时间的基本单元。在Java中,...

    同步代码块(synchronized).zip

    在Java编程语言中,同步代码块(synchronized blocks)是一种重要的多线程控制机制,用于保证线程安全,防止数据的不一致性。本压缩包包含了两个示例代码——Example12.java和Example13.java,它们是针对同步代码块...

    【多线程与高并发原理篇:4_深入理解synchronized】.doc

    在Java多线程编程中,`synchronized`关键字是实现线程安全的关键工具之一,它提供了一种同步机制,确保共享资源在同一时间只能被一个线程访问。本文将从应用层、字节码层面和Java虚拟机规范层面三个方面深入探讨`...

    iOS线程同步方案

    然而,多线程同时也带来了线程安全的问题,这就需要我们掌握线程同步方案来确保数据的一致性和完整性。本文将深入探讨iOS中的线程同步策略,包括互斥锁、自旋锁和递归锁。 1. **互斥锁(Mutex)**: 互斥锁是一种...

    Java多线程编程 线程同步机制.docx

    Java多线程编程中,线程同步机制是解决并发访问共享数据导致的线程安全问题的关键。线程安全问题源于多个线程同时访问共享数据,可能导致数据不一致或出现异常情况。为了解决这个问题,引入了锁的概念,使得在某一...

    多线程编程指南(中文+英文)

    - 线程安全的类或方法能够在多线程环境中正确工作,不会因并发访问而导致数据不一致。 - 无状态的类天生线程安全,而有状态类需要通过同步或其他机制确保线程安全。 通过阅读“多线程编程指南”,开发者将深入...

Global site tag (gtag.js) - Google Analytics