博客
关于我
两个线程同时访问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必知必会(组合Where子句,Not和In操作符)
查看>>
MySQL必知必会总结笔记
查看>>
MySQL快速入门
查看>>
MySQL快速入门——库的操作
查看>>
mysql快速复制一张表的内容,并添加新内容到另一张表中
查看>>
mysql快速查询表的结构和注释,字段等信息
查看>>
mysql怎么删除临时表里的数据_MySQL中关于临时表的一些基本使用方法
查看>>
mysql性能优化
查看>>
MySQL性能优化必备25条
查看>>
Mysql性能优化(1):SQL的执行过程
查看>>
Mysql性能优化(2):数据库索引
查看>>
Mysql性能优化(3):分析执行计划
查看>>
Mysql性能优化(4):优化的注意事项
查看>>
Mysql性能优化(6):读写分离
查看>>
MySQL性能测试及调优中的死锁处理方法
查看>>
mysql性能测试工具选择 mysql软件测试
查看>>
mysql恢复root密码
查看>>
Mysql悲观锁
查看>>
MySQL慢查询-开启慢查询
查看>>
MySQL慢查询分析和性能优化的方法和技巧
查看>>