如果某个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
分享到:
相关推荐
MFC 多线程及线程同步 MFC 多线程及线程同步 MFC 多线程及线程同步
java线程同步java线程同步java线程同步
C#线程同步的几种方法 C#线程同步的几种方法
线程同步线程同步线程同步线程同步线程同步C#代码
"Java多线程同步.pdf" Java多线程同步是指在Java语言中,如何使用synchronized关键字和其他同步机制来确保多线程程序的正确执行。在Java语言中,synchronized关键字用于对方法或者代码块进行同步,但是仅仅使用...
简单学习用例,利用线程锁对线程同步进行控制,保证对公共资源的访问不出现错误!
1.使用三种VC的多线程同步方法编写一个多线程的程序(要求在屏幕上先显示Hello,再显示World)。 1)基于全局变量的多线程同步程序;...2)基于事件的多线程同步程序; 3)基于临界区的多线程同步程序。
.NET多线程同步方法详解(一):自由锁(InterLocked) 本文主要描述在C#中线程同步的方法。线程的基本概念网上资料也很多就不再赘述了。直接接入主题,在多线程开发的应用中,线程同步是不可避免的。在.Net框架中,...
介绍了linux线程同步的所有方式,包括互斥、自旋、信号量、条件变量等技术
d: 经典线程同步互斥问题 e: 使用关键段解决子线程互斥问题 f: 利用事件实现线程同步问题 g: 利用互斥量来解决线程同步互斥问题 h: problem1 生产者消费者问题 (1生产者 1消费者 1缓冲区) problem1 more ...
多线程中的同步问题的几种解决方案,新手可以看看。主要通过临界区线程同步,互斥内核对象、事件内核对象,信号量内核对象来实现线程同步问题。
线程同步,指一个线程发出某一功能调用时,在没有得到结果之前,该调用不返回。同时其它线程为保证数据一致性,不能调用该功能。 举例1: 银行存款 5000。柜台,折:取3000;提款机,卡:取 3000。剩余:2000 举例2...
线程同步的四种方法的代码。事件 互斥量 信号量 临界区
C# 线程同步.rarC# 线程同步.rarC# 线程同步.rarC# 线程同步.rarC# 线程同步.rar
本实例写了一个多线程,从中您可以学到线程创建,线程同步,等基本知识。
通过模拟公交车运行时,司机,售票员以及乘客之间的同步状态来实现线程同步
多线程的应用 主要是描述事件对象的创建和线程的同步
很不错的源码,3种多线程实现同步方法
C#_线程同步lock,Monitor,Mutex,同步 互斥 监控 锁