一.无状态

我们都知道只有多个线程访问公共资源的时候,才可能出现数据安全问题,那么如果我们没有公共资源,是不是就没有这个问题呢?

public class NoStatusService {public void add(String status) {System.out.println("add status:" + status);}    public void update(String status) {System.out.println("update status:" + status);}}

二.不可变

如果多个线程访问公共资源是不可变的,也不会出现数据的安全性问题。

public class NoChangeService {public static final String DEFAULT_NAME = "abc";public void add(String status) {System.out.println("add status:" + status);}}

三.安全的发布

如果类中有公共资源,但是没有对外开放访问权限,即对外安全发布,也没有线程安全问题

public class SafePublishService {private String name;public String getName() {return name;}    public void add(String status) {

Java基础学习总结(162)——如何保证线程安全?相关推荐

  1. Java基础学习总结(17)——线程

    2019独角兽企业重金招聘Python工程师标准>>> 一.线程的基本概念 线程理解:线程是一个程序里面不同的执行路径 每一个分支都叫做一个线程,main()叫做主分支,也叫主线程. ...

  2. Java基础学习总结(88)——线程创建与终止、互斥、通信、本地变量

    线程创建与终止 线程创建 Thread类与 Runnable 接口的关系

  3. 尚学堂JAVA基础学习笔记_2/2

    尚学堂JAVA基础学习笔记_2/2 文章目录 尚学堂JAVA基础学习笔记_2/2 写在前面 第10章 IO技术 1. IO入门 2. IO的API 3. 装饰流 4. IO实战 5. CommonsI ...

  4. Java基础学习Day09--字符串

    Java基础学习Day09--字符串 一.简介: 二.String类字符串 三.String字符串的存储原理 四.字符串常用方法 1.equals()方法 2.字符串的搜索 3.截取子字符串 4.去除 ...

  5. Java 基础学习-Java语言概述

    Java 基础学习 第一章 Java语言概述 回顾java基础知识,进行整理记录. 文章目录 Java 基础学习 前言 一. Java语言发展史(了解) 二.Java语言跨平台原理(理解) 三.JRE ...

  6. Java基础学习——第六章 面向对象编程(下)

    Java基础学习--第六章 面向对象编程(下) 一.关键词:static 1. static关键字的引入 当我们编写一个类时,其实就是在描述其对象的属性和行为,而并没有产生实质上的对象,只有通过new ...

  7. JAVA基础学习精简心得笔记整理

    JAVA基础学习精简心得笔记整理 配置java环境变量 Java的运行过程  基本数据类型 引用数据类型 逻辑运算符 数组 方法重载 封装 继承 多态 多态的作用 单例设计模式 接口interface ...

  8. Java基础学习——第十四章 网络编程

    Java基础学习--第十四章 网络编程 一.网络编程概述 计算机网络: 把分布在不同地理区域的计算机与专门的外部设备用通信线路互连成一个规模大.功能强的网络系统,从而使众多的计算机可以方便地互相传递信 ...

  9. Java基础学习(9)

    Java基础学习 一.常用方法(API) 1.1 Math 1.2 System 1.3 Runtime 1. 4 .object 1.5 Objects 1.6 BigInteger BigInte ...

  10. Java基础学习——第十章 枚举类注解

    Java基础学习--第十章 枚举类&注解 一.枚举类(enum) 1. 枚举类的概念 枚举类:类的对象只有有限个,确定的 线程状态:创建.就绪.运行.阻塞.死亡 当需要定义一组常量时,强烈建议 ...

最新文章

  1. UI设计中颜色的前进色与后退色
  2. 自考计算机应用技术实践考核,自考计算机应用基础课程实践考核内容
  3. 带负荷测试要求二次最小电流_差动保护带负荷测试
  4. vim 的复制粘贴剪切
  5. 用大数据预测雾霾,微软是如何做的?
  6. 如何持续突破性能表现? | DX研发模式
  7. 周记20180309
  8. 【牛奶豆腐汤喝出小蛮腰】
  9. 你今天刷快手了吗(字符处理)
  10. 全媒舍:活动策划的几个要点与常用做法
  11. m277打印机 重置_惠普M277n打印机使用说明书(惠普M277n打印机使用指南PDF资料)V1.0 最新版...
  12. WebPagetest H5性能测试工具入门详解
  13. cakephp笔记——find()函数
  14. 前端husky中commitlint配置
  15. python 类关联关系
  16. Java锁?分布式锁?乐观锁?行锁?
  17. 西邮linux小组2019-2021面试题总结
  18. elgamal签名算法c语言,ELGamal数字签名.doc
  19. Qt实践3: 图片浏览器
  20. 学生管理系统的注册登录以及管理的具体实现

热门文章

  1. php判断平年和闰年,平年和闰年的三种判断方法
  2. php7 phpunit,Make phpunit catch php7 TypeError
  3. java jquery ajax_[Java教程]jquery ajax 使用
  4. oracle客户端 centos,Centos7-安装oracle客户端11.2.0.4
  5. hive3新增資料_Hive表新增字段后,新字段无法写入值问题总结
  6. python airflow_airflow 简明指南
  7. c 正则去掉html标签,C#用正则表达式去掉Html中的script脚本和html标签
  8. C++之命名空间探究
  9. linux怎么添加ubuntu源,细说 Ubuntu Linux 软件源
  10. java 操作vss,java开发常用工具总结,java开发常用工具