zoukankan      html  css  js  c++  java
  • 回顾以前的线程安全的类

    回顾前面的线程安全问题(看看源码)

      StringBuffer/StringBuilder

      Vector

      Hashtable

      以及Collections中的让集合同步的方法

    示例代码如下:

     1 package cn.itcast_12;
     2 
     3 import java.util.ArrayList;
     4 import java.util.Collections;
     5 import java.util.Hashtable;
     6 import java.util.List;
     7 import java.util.Vector;
     8 
     9 public class ThreadDemo {
    10     public static void main(String[] args) {
    11         // 线程安全的类
    12         StringBuffer sb = new StringBuffer(); // 几乎所有的方法都加了synchronized,所以线程安全,但效率低
    13         Vector<String> v = new Vector<String>(); // 几乎所有的方法都加了synchronized,所以线程安全,但效率低
    14         Hashtable<String, String> h = new Hashtable<String, String>(); // 几乎所有的方法都加了synchronized,所以线程安全,但效率低15 
    16         // Vector是线程安全的时候才会去考虑使用的,但是呢,即使要安全,也不用Vector。
    17         // 为什么呢?那么到底用谁呢?
    18         // Collections工具类的让集合同步的方法,以List举例:
    19         // public static <T> List<T> synchronizedList(List<T> list)
    20         List<String> list1 = new ArrayList<String>(); // 线程不安全的List
    21         List<String> list2 = Collections.synchronizedList(new ArrayList<String>()); // 线程安全的List
    22         // 通过Collections类的让集合同步的方法,就把线程不安全的List变成线程安全的List了,所以我们不用Vector!
    23     }
    24 }

  • 相关阅读:
    【C++】Lambda表达式
    使用velodyne16线激光雷达跑loam-velodyne
    IMU(LPMS-B2) ROS下使用教程
    【C++】关键字inline
    OpenCV中feature2D——BFMatcher和FlannBasedMatcher
    CUDA 编程
    进程(process)和线程(thread)的区别
    【C++】源自指针的报错
    【C++】如何接收函数return返回来的数组元素
    远程访问服务器tensorboard
  • 原文地址:https://www.cnblogs.com/chenmingjun/p/8724823.html
Copyright © 2011-2022 走看看