Java 中的线程安全集合
在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
发布时间: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 的 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值递增的通用方法