thread03 - synchronized

xiaoxiao2021-02-28  77

package com.neutron.t03; /** * 解说内容: * synchronized关键字使用在静态方法中 * 使用类.class作为锁 */ public class T03 { private static int count = 10; public static void m() { // 任何线程要执行下面的代码,必须先拿到T03.class这把锁 // 思考:此处是否可以使用synchronized (this)呢? synchronized (T03.class) { count --; System.out.println(Thread.currentThread().getName() + " count:" + count); } } public synchronized static void m2() { // 任何线程要执行下面的代码,必须先拿到T03.class这把锁 count --; System.out.println(Thread.currentThread().getName() + " count:" + count); } } /* 过程解说: 1.如果想要使用当前类的m方法,由于m是静态方法,没有this可以去锁定,那么依旧要锁定某个对象(锁),那么需要锁定当前的Class对象 2.每次要执行m方法时,需要类.class对象来访问的,然后再执行代码块 3.静态的属性和方法是不需要new出来对象的,那么就没有this的存在 4.方法m和方法m2是等价的。 */
转载请注明原文地址: https://www.6miu.com/read-29497.html

最新回复(0)