多线程调用静态同步方法和普通同步方法

本文通过代码示例分析了synchronized在不同场景下的应用,包括调用的都是普通同步方法、一个静态同步一个普通同步方法,以及两个都是静态同步方法的情况。总结得出,静态同步方法锁定的是类对象,而普通同步方法锁定的是实例对象,因此它们的锁互不干扰,除非涉及到相同的类锁。
摘要由CSDN通过智能技术生成

1.synchronized的场景

		synchronized是在并发下对方法可以实现加锁的效果,保证只有一个线程能够进入方法,那么一个类下有两个静态方法都用synchronized修饰的情况下,两个线程分别调用不同的方法是否会阻塞呢?
	有三种场景:	
	1. 调用的方法都为同步的普通方法
	2. 调用的方法有一个是静态同步,一个为普通同步方法
	3. 调用的方法都为静态同步方法

下面我会依不同的场景用代码来展示运行的效果

1.1调用的方法都为同步的普通方法

package com.xncoding.pos.test;

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

public class TheadTest {
	public synchronized   void say1() {
		try {
			//synchronized(o) {
				System.out.println("say1111111111");
				Thread.sleep(10000);
			//}
			
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
 
	public synchronized   void say2() {
		try {
		//	synchronized(o1) {
			System.out.println("say222222222222222222");
			Thread.sleep(2000);
		//	}
		} catch (InterruptedException e) {
			// TODO Auto-generated catc
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值