迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 > Java >

Java 中的线程安全集合

作者:迹忆客 最近更新:2023/08/02 浏览次数:

在Java中,线程安全是一个类,它可以保证类的内部状态以及同时调用多个线程时方法的值是正确的。

本文通过 Java 中线程安全的代码示例讨论不同的集合类。


Java 中的线程安全集合

在Java中,最流行的线程安全集合类是Vector、Stack、Hashtable、Properties等。让我们从下面的Vector开始学习它们。

线程安全集合类-向量

Vector 是一个可以根据需要增长的对象数组。 该类支持 add()remove()get()elementAt()size() 等方法。

示例代码:

// Importing necessary packages
import java.util.*;

public class JavaVector {
   public static void main(String[] arg) {

      // Declaring a vector
      Vector MyVector = new Vector();

      // Adding data to vector
      MyVector.add(12);
      MyVector.add(3);
      MyVector.add("ABC");
      MyVector.add(10);
      MyVector.add("DEF");
      System.out.println("The vector is: " + MyVector);

      // Removing data from the vector.
      MyVector.remove(1);
      System.out.println("The vector after removing an element is: " + MyVector);
   }
}

输出:

The vector is: [12, 3, ABC, 10, DEF]
The vector after removing an element is: [12, ABC, 10, DEF]
Thread Safe Collection Class - Stack

Stack 类实现堆栈数据结构。 它基于 LIFO 或后进先出。 Stack 类最常见的操作是 push()pop()empty()search()

示例代码:

// Importing necessary packages
import java.util.*;

public class JavaStack{
   public static void main (String[] args) {
      // Declaring a stack
      Stack<Integer> MyStk = new Stack<Integer>();

      // Adding data to stack
      MyStk.push(5);
      MyStk.push(7);
      MyStk.push(9);

      // POP from the stack
      Integer num1 = (Integer)MyStk.pop();
      System.out.println("The Popped element is: " + num1);

      //PUSH the stack
      Integer num2 = (Integer)MyStk.peek();
      System.out.println("The top element is: " + num2);
   }
}

输出:

The popped element is: 9
The top element is: 7
Thread Safe Collection Class - Hashtable

Java Hashtable 类实现将键映射到值的哈希表。 另外,它实现了Map接口并继承了目录。

示例代码:

// Importing necessary packages
import java.util.*;

public class JavaHashtable {
    public static void main(String args[]){
        // Declaring a HashTable
        Hashtable<Integer,String> HTable=new Hashtable<Integer,String>();

        // Adding data to HashTable
        HTable.put(100,"This");
        HTable.put(102,"is");
        HTable.put(101,"a");
        HTable.put(103,"data");

        for(Map.Entry MyMap:HTable.entrySet()){
            // Extracting data and keys from the HashTable
            System.out.println(MyMap.getKey()+" "+MyMap.getValue());
        }
   }
}

输出:

103 data
102 is
101 a
100 This

线程安全集合类-同步HashMap

HashMap 有一个同步版本,您可以将其用作 Java 中的线程安全集合。 该 HashMap 的工作方式与 Synchronize HashMap 最相似。

示例代码:

// Importing necessary packages
import java.util.*;

public class JavaHashMap {
    public static void main(String[] args) throws Exception{
        try {
            // Declaring a HashMap
            Map<String, String> HMap = new HashMap<String, String>();

            // Adding values to the HashMap
            HMap.put("1", "This");
            HMap.put("2", "is");
            HMap.put("3", "a");
            HMap.put("4", "sample");
            HMap.put("5", "data");

            // Printing the value of HashMap
            System.out.println("The Map is : " + HMap);

            // Synchronizing the HashMap
            Map<String, String> SMap = Collections.synchronizedMap(HMap);

            // Printing the Collection after synchronizing the HashMap
            System.out.println("The synchronized map is : " + SMap);
        }
        catch (IllegalArgumentException e) {
            // Printing exception if necessary
            System.out.println("Exception thrown : " + e);
        }
    }
}

输出:

The Map is : {1=This, 2=is, 3=a, 4=sample, 5=data}
The synchronized map is : {1=This, 2=is, 3=a, 4=sample, 5=data}

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

如何在 Java 中延迟几秒钟的时间

发布时间:2023/12/17 浏览次数:217 分类:Java

本篇文章主要介绍如何在 Java 中制造程序延迟。本教程介绍了如何在 Java 中制造程序延时,并列举了一些示例代码来了解它。

如何在 Java 中把 Hashmap 转换为 JSON 对象

发布时间:2023/12/17 浏览次数:187 分类:Java

它描述了允许我们将哈希图转换为简单的 JSON 对象的方法。本文介绍了在 Java 中把 Hashmap 转换为 JSON 对象的方法。我们将看到关于创建一个 hashmap,然后将其转换为 JSON 对象的详细例子。

如何在 Java 中按值排序 Map

发布时间:2023/12/17 浏览次数:171 分类:Java

本文介绍了如何在 Java 中按值对 Map 进行排序。本教程介绍了如何在 Java 中按值对 Map 进行排序,并列出了一些示例代码来理解它。

如何在 Java 中打印 HashMap

发布时间:2023/12/17 浏览次数:192 分类:Java

本帖介绍了如何在 Java 中打印 HashMap。本教程介绍了如何在 Java 中打印 HashMap 元素,还列举了一些示例代码来理解这个主题。

在 Java 中更新 Hashmap 的值

发布时间:2023/12/17 浏览次数:146 分类:Java

本文介绍了如何在 Java 中更新 HashMap 中的一个值。本文介绍了如何在 Java 中使用 HashMap 类中包含的两个方法-put() 和 replace() 更新 HashMap 中的值。

Java 中的 hashmap 和 map 之间的区别

发布时间:2023/12/17 浏览次数:79 分类:Java

本文介绍了 Java 中的 hashmap 和 map 接口之间的区别。本教程介绍了 Java 中 Map 和 HashMap 之间的主要区别。在 Java 中,Map 是用于以键值对存储数据的接口,

在 Java 中获取用户主目录

发布时间:2023/12/17 浏览次数:218 分类:Java

这篇文章向你展示了如何在 Java 中获取用户主目录。本教程介绍了如何在 Java 中获取用户主目录,并列出了一些示例代码以指导你完成该主题。

Java 中 size 和 length 的区别

发布时间:2023/12/17 浏览次数:179 分类:Java

这篇文章教你如何知道 Java 中大小和长度之间的区别。本教程介绍了 Java 中大小和长度之间的区别。我们还列出了一些示例代码以帮助你理解该主题。

Java 中的互斥锁

发布时间:2023/12/17 浏览次数:111 分类:Java

了解有关 Java 中互斥锁的一切,在计算机科学领域,互斥或互斥被称为并发控制的属性。每台计算机都使用称为线程的最小程序指令序列。有一次,计算机在一个线程上工作。为了更好地理解,

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便