关于JAVA线程同步

如果一个对象有多个 synchronized ,某个时刻某个线程
已经进入到了某个synchronized方法,那么在该方法没有
执行完毕前,其他线程是无法访问该对象的任何synchronized
方法。

原因:
JAVA中的[color=red]每一个对象都有一个锁(lock)[/color]或者叫做监视器(monitor).当访问某个
对象的synchronized 方法时,表示将该对象上锁,此时其他任何线程都无法再
去访问该synchronized方法了,直到之前的那个线程执行方法完毕后(或者是抛出
了异常),那么将该对象的锁释放掉,其他线程才有可能再去访问该synchronized方法。


package thread;

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

TheThread thread = new TheThread(example);

TheThread2 thread1 = new TheThread2(example);

thread.start();

thread1.start();

}
}

class Example {

public synchronized void execute() {

for(int i = 0; i < 20 ;i++) {
System.out.println("hello: "+i);
}
}
public synchronized 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();
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值