Java发生之前和线程安全

 JRamboKing 发布于 2023-02-08 19:45

假设我有一个包装HashMap的类,如下所示:

public final class MyClass{

     private final Map map;

     //Called by Thread1
     public MyClass( int size ){
         this.map = new HashMap( size );
     }

     //Only ever called by Thread2
     public final String put( String key, String val ){
        return map.put( key, value );
     }

     //Only ever called by Thread2
     public final String get( String key ){
        return map.get( key );
     }

     //Only ever called by Thread2
     public final void printMap(  ){
       //Format and print the contents of the map
     }

}

该类通过"Thread1"初始化.但是,put,get,printMap和其他操作只能由"Thread2"调用.

我是否正确理解这个类是线程安全的:

    由于对map的引用被声明为final,所有其他线程都会看到map的初始状态(之前发生).

    由于put/get/printMap/etc仅由Thread2调用,因此不需要互斥.

谢谢

撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有