同步实例或静态

本文详细介绍了Java中synchronized关键字在同步实例方法和静态方法中的应用。通过示例代码展示了如何使用synchronized同步代码块,解释了同步实例方法默认使用this作为锁对象,而同步静态方法则使用当前类的运行时类对象作为锁。讨论了多线程环境下同步方法的重要性及其作用。
摘要由CSDN通过智能技术生成

说明:本章内容是博主的Java学习笔记,

1.同步实例方法

/**
 *  synchronized同步实例方法
 *   把整个方法体作为同步代码块
 *   默认的锁对象是this对象
 *
 */
public class Test05 {




    public static void main(String[] args) {
          Test05 test01 =new Test05();


        new Thread(new Runnable() {
            @Override
            public void run() {
                test01.handle();
            }
        }).start();

        new Thread(new Runnable() {
            @Override
            public void run() {
                test01.handle22();
            }
        }).start();





    }









    public void handle()
    {
        synchronized (this){      //经常使用this当前对象作为锁对象
            for(int i=1;i<=100;i++){
                System.out.println(Thread.currentThread().getName()+"-->"+i);
            }

        }


    }

    //使用synchronized修饰实例方法,同步实例方法,默认this作为锁对象
    public synchronized void handle22()
    {
           //经常使用this当前对象作为锁对象
            for(int i=1;i<=100;i++){
                System.out.println(Thread.currentThread().getName()+"-->"+i);
            }




    }
}

2.同步静态方法

/**
 *  synchronized同步静态方法
 *   把整个方法体作为同步代码块
 *   默认的锁对象是当前类的运行时类对象 Test06.class ,有人称它为类锁
 *
 */
public class Test06 {




    public static void main(String[] args) {
          Test06 test01 =new Test06();


        new Thread(new Runnable() {
            @Override
            public void run() {
                test01.handle();
            }
        }).start();

        new Thread(new Runnable() {
            @Override
            public void run() {
                handle22();
            }
        }).start();





    }









    public void handle()
    {

        //使用当前类的运行时类对象作为锁对象,可以简单的理解为把Test06类的字节码文件作为锁对象
        synchronized (Test06.class){      //经常使用this当前对象作为锁对象
            for(int i=1;i<=100;i++){
                System.out.println(Thread.currentThread().getName()+"-->"+i);
            }

        }


    }

    //使用synchronized修饰静态方法,同步静态方法,默认的锁对象是当前类的运行时类对象
    public static synchronized void handle22()
    {
           //经常使用this当前对象作为锁对象
            for(int i=1;i<=100;i++){
                System.out.println(Thread.currentThread().getName()+"-->"+i);
            }




    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值