synchronized

synchronized

 package com.tester;

public class Thread3 {

    class Inner {

        private void m4t1() {

            int i = 5;

            while (i– > 0) {

                System.out.println(Thread.currentThread().getName()

                        + ” : Inner.m4t1()=” + i);

                try {

                    Thread.sleep(500);

                } catch (InterruptedException ie) {

                }

            }

        }

        private void m4t2() {

            int i = 5;

            while (i– > 0) {

                System.out.println(Thread.currentThread().getName()

                        + ” : Inner.m4t2()=” + i);

                try {

                    Thread.sleep(500);

                } catch (InterruptedException ie) {

                }

            }

        }

//会同步,同一个对象只有一把锁

        // private synchronized void m4t2() {

        // int i = 5;

        // while (i– > 0) {

        // System.out.println(Thread.currentThread().getName()

        // + ” : Inner.m4t2()=” + i);

        // try {

        // Thread.sleep(500);

        // } catch (InterruptedException ie) {

        // }

        // }

        // }

    }

    private void m4t1(Inner inner) {

        synchronized (inner) { // 使用对象锁

            inner.m4t1();

        }

    }

    private void m4t2(Inner inner) {

        inner.m4t2();

    }

    // 不会同步,因为锁的对象不同

//    private synchronized void m4t2(Inner inner) {

//        inner.m4t2();

//    }

    public static void main(String[] args) {

        final Thread3 myt3 = new Thread3();

        final Inner inner = myt3.new Inner();

        Thread t1 = new Thread(new Runnable() {

            public void run() {

                myt3.m4t1(inner);

            }

        }, “t1”);

        Thread t2 = new Thread(new Runnable() {

            public void run() {

                myt3.m4t2(inner);

            }

        }, “t2”);

        t1.start();

        t2.start();

    }

}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/100540.html原文链接:https://javaforall.net

(0)
上一篇 2021年5月5日 下午8:00
下一篇 2021年5月5日 下午10:00


相关推荐

  • centos7.4安装docker_docker打包python应用

    centos7.4安装docker_docker打包python应用前言当我们在一台电脑上搭建了python3.6的环境,下次换台电脑,又得重新搭建一次,设置环境变量等操作。好不容易安装好,一会提示pip不是内部或外部命令,一会又提示pip:commandno

    2022年7月29日
    13
  • Asterisk 操作mysql数据库的应用

    Asterisk 操作mysql数据库的应用

    2021年5月7日
    114
  • 启动redis出现Creating Server TCP listening socket *:6379: bind: No such file or directory

    启动redis出现Creating Server TCP listening socket *:6379: bind: No such file or directory[6644]02Apr23:11:58.976#CreatingServerTCPlisteningsocket*:6379:bind:Nosuchfileordirectoryredis报错:[6644]02Apr23:11:58.976#CreatingServerTCPlisteningsocket*:6379:bind:

    2022年5月2日
    39
  • QDir过滤文件的坑

    QDir过滤文件的坑QStringqtVer PROGRAMS PATH m qtVersion QDirdir qtVersionPat dir cd m qtVersion mid 3 qDebug lt

    2026年3月17日
    1
  • 图论:连通分量和强连通分量

    图论:连通分量和强连通分量1 连通图 1 1 顶点的连通性在无向图 G 中 若从顶点 vi 到顶点 vj 有路径 当然从 vj 到 vi 也一定有路径 则称 vi 和 vj 是连通的 1 2 连通图在无向图 G 中 若 V G 中任意两个不同的顶点 vi 和 vj 都连通 即有路径 则称 G 为连通图 Con nectedGraph 例 图 G2 和 G3 是连通图 在有向图 G 中 如果两个顶点 vi vj 间 vi gt vj 有一条从 vi 到 vj 的有向路径 同时还有一条

    2026年3月16日
    2
  • 小米BL不解锁刷机「建议收藏」

    小米BL不解锁刷机「建议收藏」关于小米NOTE顶配近期解锁的问题中发现还有很多人不会用9008模式刷机,现出个简单教程方便米粉们救砖。硬件:小米NOTE顶配手机win10系统的电脑手机与电脑相连的数据线软件:老版本的miflash(版本号:2015.10.28。0)最新版本miflash最新解BL锁工具或者小米助手(用来装驱动)开发版6.17及以前的线刷包随便下一个一个你最终想刷的版本(推荐最新稳定版)…

    2022年4月30日
    172

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号