美文网首页
静态函数使用的锁是 该函数所属的字节码文件对象

静态函数使用的锁是 该函数所属的字节码文件对象

作者: 骇客与画家 | 来源:发表于2018-01-11 00:11 被阅读0次

静态的同步函数使用的锁是 该函数所属的字节码文件对象 可以用 getClass方法获取,
也可以用当前 类名.class表示。

package day12;

/*
静态的同步函数使用的锁是 该函数所属的字节码文件对象 可以用 getClass方法获取,
也可以用当前 类名.class表示。
 */
class Ticket implements Runnable{ //extends Thread{
    private static int num = 100;
    //    Object obj = new Object();
    boolean flag = true;

    public void run()
    {
        System.out.println("this:"+this.getClass());
        if (flag)
            while (true)
            {
                synchronized(Ticket.class)//(this.getClass())
                {
                    if(num>0){
                        try { Thread.sleep(10); } catch (InterruptedException e) { e.printStackTrace(); }
                        System.out.println(Thread.currentThread().getName()+"...obj..."+num--);
                    }
                }
            }
        else
            while (true)
                show();
    }

    public static synchronized void show(){
        if(num>0){
            try { Thread.sleep(10); } catch (InterruptedException e) { e.printStackTrace(); }
            System.out.println(Thread.currentThread().getName()+"...function..."+num--);
        }
    }
}

public class StaticSynFunctionLockDemo {

    public static void main(String[] args) {
        Ticket t = new Ticket();//创建一个线程任务对象。

        Class clazz = t.getClass();

//        Class clazz = Ticket.class;
//        System.out.println("t:"+t.getClass());

        Thread t1 = new Thread(t);
        Thread t2 = new Thread(t);

        t1.start();
        try { Thread.sleep(10); } catch (InterruptedException e) { e.printStackTrace(); }
        t.flag = false;
        t2.start();
    }
}

相关文章

  • 静态函数使用的锁是 该函数所属的字节码文件对象

    静态的同步函数使用的锁是 该函数所属的字节码文件对象 可以用 getClass方法获取,也可以用当前 类名.cla...

  • Synchronized关键字涉及到的类锁,方法锁,重入锁

    synchronized修饰静态方法获取的是类锁(类的字节码文件对象)。 synchronized修饰普通方法或代...

  • synchronized

    同步锁synchronized关键字1>>修饰实例方法 对象锁为this2>>修饰静态方法 对象锁是当前类的字节码...

  • JVM-3

    五、字节码剖析(代码分析) 使用javap -verbose命令分析一个字节码文件时,将会分析文件的魔数、版本号、...

  • java系列23:反射

    反射:使用类的字节码所做的一系列操作。 源代码编译过后的字节码文件(.class文件),在java中也被视为对象,...

  • java笔记--关键字this及应用

    this: 代表其所在函数所属对象的引用,当在函数内需要用到调用该函数的对象时,就用this。 应用: 当成员变量...

  • C++学习(3)-类和对象

    1.this指针作用 作用就是指向成员函数所作用的对象 非静态成员函数中可以直接使用this来代表指向该函数作用的...

  • 22. java虚拟机总结-从栈帧看字节码 (五)

    怎么查看字节码文件?字节码文件长什么样子?对象初始化之后,具体的字节码又是怎么执行的? 查看字节码的工具 java...

  • JVM_字节码:字节码常量池结构与描述符

    使用javap -verbose 命令分析一个字节码文件时,将会分析该字节码文件的魔数、版本号、常量池、类信息、类...

  • C++ 静态成员函数

    通过将某个函数成员声明为 static,我们将使该函数独立于本类的任何具体对象。从静态函数内引用类成员,必须使用限...

网友评论

      本文标题:静态函数使用的锁是 该函数所属的字节码文件对象

      本文链接:https://www.haomeiwen.com/subject/nbnanxtx.html