迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 > 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}

上一篇:Java 中的漂亮打印 XML

下一篇:没有了

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

本文地址:

相关文章

Java 中的漂亮打印 XML

发布时间:2023/08/02 浏览次数:57 分类:Java

漂亮地打印 XML 意味着以预期的方式打印 XML 代码。 本教程演示如何在控制台中漂亮地打印 XML 和 XML 文件。在控制台中漂亮地打印 XML 下面的示例演示了如何创建 XML 并在控制台中漂亮地打印它

将 XML 解析为 Java 对象

发布时间:2023/08/02 浏览次数:177 分类:Java

本文将教我们如何用 Java 解析 XML 并将其转换为对象。将 XML 解析为 Java 对象 当谈论用 Java 解析 XML 文件时,Java 中提供了一些常见且最常用的解析器。

Java 拼写检查

发布时间:2023/08/02 浏览次数:85 分类:Java

本文介绍如何在 Java 中检查单词拼写。Java 拼写检查 许多类库可以使用英语词典检查单词的拼写。 如果您不想创建字典来检查英语单词的拼写,可以使用这些库。

Java 的 Gitignore 文件

发布时间:2023/08/02 浏览次数:101 分类:Java

本文通过示例讨论 Java 的 .gitignore 文件,并列出了手动创建 .gitignore 时要遵循的规则。Java .gitignore 文件概述

在 Java 中创建 SSH 连接

发布时间:2023/08/02 浏览次数:91 分类:Java

本文讨论如何打开 SSH 连接,并演示如何使用 JSch 和 Apache Mina SSHD 创建 SSH 连接。在 Java 中创建 SSH 连接

Java 中的二进制数加法

发布时间:2023/08/02 浏览次数:65 分类:Java

本文介绍如何在 Java 中执行二进制加法。Java 中的二进制数加法 二进制数是 1 和 0 的组合,与算术数不同,相加的方式不同。 二进制数的加法规则为:

Java Spring Boot 中的Autowired

发布时间:2023/08/02 浏览次数:67 分类:Java

Spring Boot 是一个流行的 Java 框架。 在Spring Boot中,最常用的注解是@Autowired,主要用于自动收集bean。在这篇文章中,我们将讨论Java Spring Boot中的@Autowired。

Java 中的后缀表达式

发布时间:2023/08/02 浏览次数:136 分类:Java

后缀表达式比中缀表达式更容易计算并且速度更快,因为我们不需要处理或遵循任何运算符优先级规则。 此外,后缀表达式不包含任何括号。

Java 中的增量映射

发布时间:2023/08/02 浏览次数:100 分类:Java

在 Java 中使用 Map 或 HashMap 时,您可能需要增加该值。 在 Java 中,有很多方法可以增加 Map 的值。方法一:Java中Map值递增的通用方法

扫一扫阅读全部技术教程

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

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便