public class My  {
    private  static    lock = new  ();

    public void methidA(){
        synchronized (lock){
            for(int i = 0; i< 20; i++){
                System.out.println(\"methidA()\");

                try {
                    if(10 == i){
                        lock.wait();//让出CPU进入等待,释放对象锁
                    }
                    Thread.sleep(5);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }
    }


    public void methidB(){
        synchronized (lock){
            for(int i = 0; i< 20; i++){
                System.out.println(\"methidB()\");
                try {
                    if(10 == i){
                        lock.notify();//唤醒一个处于等待该对象锁的线程,然后往下执行
                    }
                    Thread.sleep(5);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }
    }


    public  static void main(String []args){
        My  my  = new My ();
        new Thread(new Runnable() {
            @Override
            public void run() {
                my .methidA();
            }
        }).start();

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

}

输出结果:

\"C:\\Program Files\\Java\\jdk1.8.0_161\\bin\\java.exe\" \"-javaagent:C:\\Program Files\\JetBrains\\IntelliJ IDEA 2018.2.2\\lib\\idea_rt.jar=12708:C:\\Program Files\\JetBrains\\IntelliJ IDEA 2018.2.2\\bin\" -Dfile.encoding=UTF-8 -classpath \"C:\\Program Files\\Java\\jdk1.8.0_161\\jre\\lib\\charsets.jar;C:\\Program Files\\Java\\jdk1.8.0_161\\jre\\lib\\deploy.jar;C:\\Program Files\\Java\\jdk1.8.0_161\\jre\\lib\\ext\\access-bridge-64.jar;C:\\Program Files\\Java\\jdk1.8.0_161\\jre\\lib\\ext\\cldrdata.jar;C:\\Program Files\\Java\\jdk1.8.0_161\\jre\\lib\\ext\\dnsns.jar;C:\\Program Files\\Java\\jdk1.8.0_161\\jre\\lib\\ext\\jaccess.jar;C:\\Program Files\\Java\\jdk1.8.0_161\\jre\\lib\\ext\\jfxrt.jar;C:\\Program Files\\Java\\jdk1.8.0_161\\jre\\lib\\ext\\localedata.jar;C:\\Program Files\\Java\\jdk1.8.0_161\\jre\\lib\\ext\\nashorn.jar;C:\\Program Files\\Java\\jdk1.8.0_161\\jre\\lib\\ext\\sunec.jar;C:\\Program Files\\Java\\jdk1.8.0_161\\jre\\lib\\ext\\sunjce_provider.jar;C:\\Program Files\\Java\\jdk1.8.0_161\\jre\\lib\\ext\\sunmscapi.jar;C:\\Program Files\\Java\\jdk1.8.0_161\\jre\\lib\\ext\\sunpkcs11.jar;C:\\Program Files\\Java\\jdk1.8.0_161\\jre\\lib\\ext\\zipfs.jar;C:\\Program Files\\Java\\jdk1.8.0_161\\jre\\lib\\javaws.jar;C:\\Program Files\\Java\\jdk1.8.0_161\\jre\\lib\\jce.jar;C:\\Program Files\\Java\\jdk1.8.0_161\\jre\\lib\\jfr.jar;C:\\Program Files\\Java\\jdk1.8.0_161\\jre\\lib\\jfxswt.jar;C:\\Program Files\\Java\\jdk1.8.0_161\\jre\\lib\\jsse.jar;C:\\Program Files\\Java\\jdk1.8.0_161\\jre\\lib\\management-agent.jar;C:\\Program Files\\Java\\jdk1.8.0_161\\jre\\lib\\plugin.jar;C:\\Program Files\\Java\\jdk1.8.0_161\\jre\\lib\\resources.jar;C:\\Program Files\\Java\\jdk1.8.0_161\\jre\\lib\\rt.jar;C:\\Users\\LeeJH\\IdeaProjects\\un d\\out\\production\\un d\" My 
methidA()
methidA()
methidA()
methidA()
methidA()
methidA()
methidA()
methidA()
methidA()
methidA()
methidA()
methidB()
methidB()
methidB()
methidB()
methidB()
methidB()
methidB()
methidB()
methidB()
methidB()
methidB()
methidB()
methidB()
methidB()
methidB()
methidB()
methidB()
methidB()
methidB()
methidB()
methidA()
methidA()
methidA()
methidA()
methidA()
methidA()
methidA()
methidA()
methidA()

Process finished with exit code 0

 

收藏 打印