博客
关于我
两个线程同时访问synchronized修饰的静态方法(synchronized)
阅读量:231 次
发布时间:2019-02-28

本文共 1431 字,大约阅读时间需要 4 分钟。

示例代码

public class TestMain implements Runnable {       //格式化    static SimpleDateFormat sim = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");    @Override    public void run() {           method();    }    //这里要构建静态方法就得把方法抽出来,重写run()方法是不支持static修饰符的    public static synchronized void method() {           Date satrtTime = new Date();        String time = sim.format(satrtTime);        System.out.println(time + ":【" + Thread.currentThread().getName() + "访问了方法】");        try {               //睡眠3秒            Thread.sleep(3000);        } catch (InterruptedException e) {               e.printStackTrace();        }        Date endTime = new Date();        String time2 = sim.format(endTime);        System.out.println(time2 + ":【" + Thread.currentThread().getName() + "准备退出这个方法了】");    }    public static void main(String[] args) throws Exception {           //创建一个对象testMain1        TestMain testMain1 = new TestMain();        //再创建一个对象testMain2        TestMain testMain2 = new TestMain();        System.out.println("运行开始");        Thread thread1 = new Thread(testMain1);        Thread thread2 = new Thread(testMain2);        thread1.start();        thread2.start();        //让主线程做个等待,等线程一和线程二都执行完它才继续执行        thread1.join();        thread2.join();        System.out.println("运行结束");    }}

运行结果:

在这里插入图片描述

总结

从运行结果可以发现,这时虽然用了两个不同的实例对象,但是Thread-1线程还是要等待Thread-0释放锁,这时因为用static修饰的方法属于类方法,这时的锁是类锁,类只有一个,不管你实例化了多少个对象,他们类都是一样的,所以锁也是一样的,自然需要等待和竞争。

转载地址:http://pzjp.baihongyu.com/

你可能感兴趣的文章
mysql五补充部分:SQL逻辑查询语句执行顺序
查看>>
mysql交互式连接&非交互式连接
查看>>
MySQL什么情况下会导致索引失效
查看>>
Mysql什么时候建索引
查看>>
MySql从入门到精通
查看>>
MYSQL从入门到精通(二)
查看>>
mysql以下日期函数正确的_mysql 日期函数
查看>>
mysql以服务方式运行
查看>>
mysql优化--索引原理
查看>>
MySQL优化配置详解
查看>>
mysql会员求积分_MySql-统计所有会员的最高前10次的积分和
查看>>
MySQL保姆级教程(SQL语法基础篇)从小白到高手的进阶指南,收藏这一篇就够了
查看>>
MySQL修改密码报错ERROR 1396 (HY000): Operation ALTER USER failed for ‘root‘@‘localhost‘
查看>>
Mysql全局优化参数
查看>>
MySQL全文索引实现简单版搜索引擎
查看>>
MySQL全面瓦解:安装部署与准备
查看>>
MySQL内存表使用技巧
查看>>
MySQL再叙(体系结构、存储引擎、索引、SQL执行过程)
查看>>
MySQL函数
查看>>
mysql函数汇总之数学函数
查看>>