`

线程同步2

    博客分类:
  • JAVA
 
阅读更多
如果某个synchronized 方法是static 的,那么当线程访问该方法时,
它锁的并不是synchronized方法所在的对象,而是synchronized方
法所在的对象所对应的Class 对象,因为Java中无论一个类有多少个
对象,这些对象会对应唯一一个CLASS对象,因些当线程分别访问
同一个类的两个对象的两个static,synchronized方法时,他们的执行
顺序的,也就是说一个线程先去执行方法,执行完毕后另一个线程
在执行。

-------------------------------------------------
package thread;

public class ThreadTest4 {
public static void main(String[] args) {
Example example = new Example();

TheThread thread = new TheThread(example);
example = new Example();
TheThread2 thread1 = new TheThread2(example);

thread.start();

thread1.start();

}
}

class Example {

public  static void execute() {

for(int i = 0; i < 20 ;i++) {
System.out.println("hello: "+i);
}
}
public  synchronized static void execute2() {

for(int i = 0; i < 20 ;i++) {
System.out.println("word: "+i);
}
}
}

class TheThread extends Thread {

private Example example;

public TheThread(Example example) {
this.example = example;
}

@Override
public void run() {
// TODO Auto-generated method stub
example.execute();
}
}
class TheThread2 extends Thread {

private Example example;

public TheThread2(Example example) {
this.example = example;
}

@Override
public void run() {
// TODO Auto-generated method stub
example.execute2();
}
}

结果:
--------------------------------------------------
hello: 0
hello: 1
word: 0
hello: 2
word: 1
hello: 3
word: 2
hello: 4
word: 3
word: 4
word: 5
word: 6
word: 7
word: 8
word: 9
word: 10
word: 11
word: 12
word: 13
word: 14
word: 15
word: 16
word: 17
hello: 5
hello: 6
hello: 7
hello: 8
hello: 9
hello: 10
hello: 11
hello: 12
hello: 13
hello: 14
hello: 15
hello: 16
hello: 17
hello: 18
hello: 19
word: 18
word: 19
分享到:
评论

相关推荐

    vc++中的线程锁(线程锁保持线程同步)

    在VC++编程环境中,线程同步是一个至关重要的概念,特别是在多线程程序设计中,以确保并发执行的线程能够安全地访问共享资源,避免数据竞争和其他潜在的问题。本篇文章将详细探讨线程锁在VC++中的应用,以及如何通过...

    MFC 多线程及线程同步

    MFC 多线程及线程同步 MFC 多线程及线程同步 MFC 多线程及线程同步

    java线程同步java线程同步

    java线程同步java线程同步java线程同步

    C#线程同步的几种方法

    C#线程同步的几种方法 C#线程同步的几种方法

    创建多线程线程同步

    本主题将深入探讨如何在编程中创建多线程以及如何实现线程同步,特别关注CEVENT对象在Windows API中的应用。 **一、多线程的基本概念** 多线程是指在一个进程中可以同时运行多个独立的执行流,每个执行流被称为一...

    线程同步小例子

    在编程领域,线程同步是多线程编程中的一个核心概念,它涉及到如何有效地管理和协调多个并发执行的线程,确保它们能正确地共享资源,避免数据竞争和死锁等问题。这个“线程同步小例子”是基于孙鑫先生著作中的示例...

    VC++线程同步实例

    在编程领域,线程同步是多线程编程中的一个重要概念,它确保了多个线程在访问共享资源时的正确性和一致性。在这个“VC++线程同步实例”中,我们将探讨如何利用VC++(Visual C++)来实现线程间的同步,以避免数据竞争...

    Java多线程同步.pdf

    "Java多线程同步.pdf" Java多线程同步是指在Java语言中,如何使用synchronized关键字和其他同步机制来确保多线程程序的正确执行。在Java语言中,synchronized关键字用于对方法或者代码块进行同步,但是仅仅使用...

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

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

    操作系统线程同步算法

    在`thread2`中,很可能通过调用`CreateMutex`、`WaitForSingleObject`和`ReleaseMutex`等API函数实现了基于互斥量的线程同步,确保了对共享资源的独占访问。 然后,我们讨论一下Peterson算法。Peterson算法是由Glen...

    线程同步的四种方式

    在多线程编程中,线程同步是一种控制多个线程并发执行时访问共享资源的方式,以避免数据不一致和死锁等问题。以下是对线程同步的四种主要方式的详细解释: 1. **事件(Event)** 事件是Windows API提供的一种线程...

    多线程及线程同步

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

    使用三种VC的多线程同步方法编写一个多线程的程序

    1.使用三种VC的多线程同步方法编写一个多线程的程序(要求在屏幕上先显示Hello,再显示World)。 1)基于全局变量的多线程同步程序;...2)基于事件的多线程同步程序; 3)基于临界区的多线程同步程序。

    Delphi多线程同步的例子

    2. **线程同步**:当多个线程访问共享资源时,可能会引发竞态条件,导致数据不一致。为避免这种情况,需要进行线程同步。Delphi 提供了几种同步机制,如 `TEvent`, `TMutex`, `TCriticalSection` 和 `TSemaphore`。...

    3种多线程实现同步方法

    本篇文章将深入探讨三种在C++中实现多线程同步的方法:事件对象、关键代码段和互斥对象。 首先,我们来看**事件对象**。事件对象是一种信号机制,用于线程间通信和同步。在Windows API中,CreateEvent函数创建一个...

    NET多线程同步方法详解

    .NET多线程同步方法详解(一):自由锁(InterLocked) 本文主要描述在C#中线程同步的方法。线程的基本概念网上资料也很多就不再赘述了。直接接入主题,在多线程开发的应用中,线程同步是不可避免的。在.Net框架中,...

    C#代码_线程同步线程同步线程同步线程同步线程同步线程同步

    2. **Mutex**:与`Monitor`类似,`Mutex`也用于控制对共享资源的独占访问,但它的作用范围可以跨越进程,允许不同进程中的线程同步。 3. **Semaphore**:信号量是一种更灵活的同步机制,它允许指定数量的线程同时...

    winform 线程同步源码

    在Windows Forms(Winform)应用程序中,线程同步是一个关键概念,它确保了多线程环境中的数据一致性、避免竞态条件以及防止UI线程被阻塞。在本资源包中,你可能会找到一系列用于理解和实践Winform线程同步的源代码...

    linux线程同步

    介绍了linux线程同步的所有方式,包括互斥、自旋、信号量、条件变量等技术

    c#线程同步的典型例子

    C#线程同步是多线程编程中的一个重要概念,它涉及到如何控制多个线程对共享资源的访问,以避免数据不一致性和竞态条件。在C#中,线程同步通常用于确保在某一时刻只有一个线程可以访问特定的代码块或资源,从而保证...

Global site tag (gtag.js) - Google Analytics