`
jackroomage
  • 浏览: 1215098 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类

多线程同步的 例子

 
阅读更多

方法1、

 

package RT2;

import java.util.concurrent.locks.ReentrantLock;

public class PersonSync extends Thread{
   
    private final ReentrantLock lock = new ReentrantLock();
    static int j;
   
//    这里是通过synchronized 方法控制多线程 (public synchronized static void quqian(){ )
    public  void quqian(){ // 是对类对象加锁
        synchronized(PersonSync.class){
        for (int i = 0; i < 100; i++) {
            j++;
            System.out.println(Thread.currentThread().getName()+":"+j);
         }
      }
    }
   
//  这里是lock 接口的用法
    public void quloc(){
        lock.lock();  // block until condition holds
         try {
             for (int i = 0; i < 100; i++) {
                j++;
                System.out.println(Thread.currentThread().getName()+":"+j);
             }
         } finally {
           lock.unlock();
         }
    }
   
    public  void run(){
//        quqian();
        quloc();
    }
   
    public static void main(String[] args) {
       
       
        PersonSync p1=new PersonSync();
        p1.start();
       
        PersonSync p2=new PersonSync();
        p2.start();
    }

}

 

 

方法2、

 

package RT2;

public class Machine {
    int j=0;
    public  synchronized void quqian(){
        for (int i = 0; i < 100; i++) {
            j++;
            System.out.println(Thread.currentThread().getName()+":"+j);
        }
    }
}

 

 

package RT2;

public class Person extends Thread{
   
    public Machine machine;
   
    public Person(Machine machine){
        this.machine=machine;
    }
   
    public  void run(){
        machine.quqian();
    }
   
    public static void main(String[] args) {
        Machine machine=new Machine();
       
        Person p1=new Person(machine);
        p1.start();
       
        Person p2=new Person(machine);
        p2.start();
    }

}

分享到:
评论

相关推荐

    java多线程同步例子

    java多线程同步互斥访问实例,对于初学者或是温故而知新的同道中人都是一个很好的学习资料

    线程同步小例子

    学习这个例子有助于加深对线程同步的理解,掌握如何在实际项目中应用这些技术,这对于开发高效、可靠的多线程应用程序至关重要。同时,通过对孙鑫先生著作中的示例进行改进,我们可以从中学习到如何根据具体需求调整...

    Delphi多线程同步的例子

    本文将深入探讨Delphi中的多线程和线程同步,并以"SortThreads"和"delphi-thread-gui"这两个示例项目为例,讲解如何在实践中应用这些概念。 1. **多线程**:多线程允许应用程序同时执行多个独立的任务,提高程序的...

    c#线程同步的典型例子

    C#线程同步是多线程编程中的一个重要概念,它涉及到如何控制多个线程对共享资源的访问,以避免数据不...通过实践和调试这些典型的C#线程同步例子,你可以深入理解各种同步机制的工作方式,并学会在实际项目中灵活运用。

    易语言大漠多线程例子.rar

    这个"易语言大漠多线程例子.rar"压缩包包含了一个使用大漠插件实现多线程编程的示例项目。 多线程是现代程序设计中一个关键的概念,它允许程序同时执行多个任务,提高了程序的效率和响应性。在易语言中,使用大漠...

    多线程例子 演示多线程使用

    4. **线程同步**:多线程编程中一个重要的问题就是同步,以防止数据竞争和死锁。`std::mutex`可以用来保护共享资源,确保同一时间只有一个线程能访问。例如: ```cpp #include #include std::mutex mtx; int ...

    很不错的多线程的例子

    标题"很不错的多线程的例子"和描述"VC++很不错的多线程的实例"都指向了一个关键点:如何在VC++中有效地实现多线程。 多线程是现代操作系统中的一个核心特性,它允许一个进程内同时运行多个独立的执行线程。在VC++中...

    易语言多线程简单实用例子分享

    在这个“易语言多线程简单实用例子分享”中,我们将探讨如何在易语言中利用多线程技术来提高程序的运行效率和用户体验。 多线程是现代软件开发中的一个重要概念,它允许程序同时执行多个任务,而不是顺序地执行。在...

    易语言完美多线程控制例子

    在这个“易语言完美多线程控制例子”中,我们将探讨如何在易语言中实现高效、稳定的多线程控制。 首先,我们需要了解多线程的基本概念。多线程是指在一个进程中同时执行多个线程,每个线程都独立于其他线程,有自己...

    MFC中的多线程同步

    在IT行业中,尤其是在Windows开发领域,多线程同步是一个至关重要的概念。MFC(Microsoft Foundation Classes)是微软提供的一种C++库,它为构建Windows应用程序提供了丰富的类和接口。在这个主题中,我们将深入探讨...

    C#多线程及同步示例简析

    60年代,在OS中能拥有资源和独立运行的基本单位是进程,然而随着计算机技术的发展,进程出现了很多弊端,一是由于进程是资源拥有者,创建、撤消与切换存在较大的时空开销,因此需要引入轻型进程;二是由于对称多处理...

    udp多线程传输例子

    在"udp多线程传输例子"中,我们可以预期看到一个利用多线程进行UDP通信的程序示例。通常,这样的程序会包含以下几个关键部分: 1. **套接字创建**:在C++或Java等编程语言中,首先需要创建一个UDP套接字,这通过...

    基于win32的多线程实现例子

    本文将深入探讨如何使用Win32 API在Windows系统上实现多线程编程,以创建一个能同时执行不同任务的应用程序,具体参考标题为"基于win32的多线程实现例子"的示例。 一、多线程概念 多线程是指在一个进程中同时运行多...

    IOS两个精典的关于多线程的例子代码

    2. **线程同步与通信**:在多线程环境中,线程间通信和同步是必要的。可以使用`@synchronized`关键字来确保对共享资源的访问是互斥的。另外,`performSelectorOnMainThread:withObject:waitUntilDone:`可以确保在...

    Java线程同步例子.pdf

    在Java中,线程同步是保证多线程安全...上述Java线程同步例子中涉及到的代码虽然是片段,但涵盖了线程同步处理的多个重要方面,帮助我们理解和使用Java线程同步机制,以及在设计和实现多线程应用程序时的实践和技巧。

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

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

    易语言多线程好用例子 分享给大家

    这个模块可能提供了更高级的线程管理功能,比如线程池、线程优先级设置、线程同步工具等。通过引入这个模块,开发者可以更高效地编写多线程程序,减少错误和提高性能。 五、鱼刺类.爱偷懒2.1.ec 和 鱼刺类.多线程....

    C#多线程排序例子

    为了防止数据竞争,可能需要使用锁(如`Monitor`类,`Mutex`,或`Semaphore`)进行线程同步,确保在多线程环境中正确地访问共享资源。 3. **线程优先级**:C#允许为线程设置优先级,如`ThreadPriority.Lowest`、`...

    多线程的同步机制 VC++

    多线程同步机制在软件开发中扮演着至关重要的角色,特别是在多处理器系统或者并发执行的任务中,确保线程间的正确协作和数据一致性是必不可少的。VC++中提供了多种同步机制来处理多线程间的同步问题,其中Event是...

Global site tag (gtag.js) - Google Analytics