找到关于编程的34423 篇文章

Java 中 volatile 和 transient 的区别

Mahesh Parahar
更新于 2019年11月18日 07:24:40

9K+ 次浏览

volatile 关键字用于多线程环境中,多个线程同时读写同一个变量。volatile 关键字将更改直接刷新到主内存,而不是 CPU 缓存。另一方面,transient 关键字用于序列化。标记为 transient 的字段不能参与序列化和反序列化过程。如果我们不想保存任何变量的值,则可以使用 transient 关键字修饰该变量。序号|关键字|volatile|transient|1|基本概念|volatile 关键字用于将更改直接刷新到主内存|transient 关键字用于在序列化过程中排除变量|2|默认值|volatile … 阅读更多

Java 中 List 和 Set 的区别

Mahesh Parahar
更新于 2023年12月05日 09:48:36

2K+ 次浏览

List 和 Set 都是属于集合框架的接口。这两个接口都扩展了 Collection 接口。它们都用于将对象的集合存储为单个单元。在 jdk1.2 之前,我们使用数组、向量和哈希表将对象分组为单个单元。序号|关键字|List|Set|1|位置访问|List 提供对集合中元素的位置访问。|Set 不提供对集合中元素的位置访问。|2|实现|List 的实现包括 ArrayList、LinkedList、Vector、Stack。|Set 接口的实现包括 HashSet 和 LinkedHashSet。|3|重复元素|List 可以存储重复元素。|Set 不能存储重复元素。|4|排序|List 保持… 阅读更多

Java 中 StringBuffer 和 StringBuilder 的区别

Mahesh Parahar
更新于 2023年12月05日 10:02:00

13K+ 次浏览

StringBuffer 和 StringBuilder 都是可变类,可用于对字符串对象执行操作,例如反转字符串、连接字符串等。我们可以修改字符串而无需创建新的字符串对象。StringBuffer 是线程安全的,而 StringBuilder 不是线程安全的。因此,它比 StringBuffer 快。此外,字符串连接 + 运算符内部使用 StringBuffer 或 StringBuilder 类。以下是区别。序号|关键字|StringBuffer|StringBuilder|1|基本概念|StringBuffer 是随着 Java 的初始版本引入的|它是在 Java 5 中引入的|2|同步|它是同步的|它不是同步的|3|性能|它是线程安全的。因此,多个线程不能… 阅读更多

Java 中堆栈内存和堆内存的区别

Mahesh Parahar
更新于 2019年11月18日 07:10:08

6K+ 次浏览

JVM 将内存空间划分为两个部分,一个是栈空间,另一个是堆空间。栈空间主要用于存储方法执行顺序和局部变量。栈总是以 LIFO (后进先出) 顺序存储块,而堆内存使用动态分配来分配和释放内存块。分配给堆的内存将持续存在,直到发生以下事件之一:程序终止;内存释放。相反,分配给栈的内存将持续存在,直到函数返回。以下是区别。序号|关键字|栈|堆内存|1|基本概念|栈内存用于存储生命周期很短的项目,例如局部变量、… 阅读更多

Java 中 ReentrantLock 和 Synchronized 的区别

Mahesh Parahar
更新于 2019年11月18日 07:06:01

2K+ 次浏览

有两种方法可以使多个线程获取共享资源的锁。一种是 ReentrantLock(或 ReadWriteLock),另一种是使用 Synchronized 方法。ReentrantLock 类已在 Java 5 中的 Java 并发包中提供。它是 Lock 接口的实现,根据 Java 文档,Lock 接口的实现提供了比使用 synchronized 方法所能获得的更广泛的操作。序号|关键字|ReentrantLock|Synchronized|1|获取锁|ReentrantLock 类提供 lock() 方法,以便线程获取共享资源的锁|您只需要编写 synchronized 关键字即可获取锁|2|释放锁|要释放锁,… 阅读更多

Java 中 Thread 和 Runnable 的区别

Mahesh Parahar
更新于 2019年11月18日 06:59:00

28K+ 次浏览

有两种方法可以创建新的执行线程。一种是声明一个类作为 Thread 类的子类。此子类应覆盖 Thread 类的 run 方法。然后可以分配并启动子类的实例。创建线程的另一种方法是声明一个实现 Runnable 接口的类。然后,该类实现 run 方法。然后可以分配类的实例,在创建 Thread 时作为参数传递,并启动它。每个线程都有一个名称用于标识。多个线程可能… 阅读更多

Java 中 Exception 和 Error 的区别

Mahesh Parahar
更新于 2023年09月14日 16:08:28

23K+ 次浏览

异常和错误都是 Throwable 类的子类。错误表示主要由于缺乏系统资源而发生的问题,我们的应用程序不应捕获这些类型的问题。一些错误的示例是系统崩溃错误和内存不足错误。错误主要在运行时发生,因此它们属于未经检查的类型。异常是在运行时和编译时可能发生的问题。它主要发生在开发人员编写的代码中。异常分为两类:已检查异常和未经检查异常。序号|关键字|异常|错误|1|类型|分类为未经检查的类型|分类为… 阅读更多

Java 中序列化和外部化的区别

Mahesh Parahar
更新于 2019年11月18日 06:52:04

3K+ 次浏览

序列化和外部化都是将对象转换为字节流并将字节流存储在数据库或内存中的过程。实现 java.io.Serializable 接口的类可以被序列化。另一方面,外部化用于根据应用程序的要求进行自定义序列化。外部化扩展了 java.io.Serializable。序号|关键字|序列化|外部化|1|接口|序列化是一个标记接口|外部化包含两个方法 readExternal 和 writeExternal。|2|实现逻辑|实现此接口的类将序列化或持久化 Java 对象的责任交给 JVM。JVM 使用 readObject 和 writeObject 进行序列化|外部化通过覆盖 readExternal 和 writeExternal 方法来为应用程序提供实现逻辑控制。|3|方法|… 阅读更多

Java 中 Comparable 和 Comparator 的区别

Mahesh Parahar
更新于 2020年07月08日 07:25:33

3K+ 次浏览

Comparable 和 Comparator 都是接口,可用于对集合中的元素进行排序。Comparator 接口属于 java.util 包,而 Comparable 接口属于 java.lang 包。Comparator 接口使用提供的两个对象对集合进行排序,而 Comparable 接口比较的是“this”(指提供给它的一个对象)。序号 | 关键点 | Comparable | Comparator |1 | 方法 | Comparable 接口有一个方法 compareTo(Object a) | Comparator 接口有一个方法 compare(Object o1, Object o2) |2 | 排序用法 | 可以使用 Collection.sort(List) 方法对 Comparable 类型对象的集合进行排序。| 可以使用 Collection.sort(List, Comparator) 方法对 Comparator 类型对象的集合进行排序。 |3 | 排序顺序 | Comparable 提供单一排序... 阅读更多

Java 中 ConcurrentHashMap 和 SynchronizedHashMap 的区别

Mahesh Parahar
更新于 2019年11月18日 06:43:10

7K+ 次浏览

ConcurrentHashMap 是在 JDK 1.5 中引入的一个类。ConcurrentHashMap 只在桶级别(称为片段)添加或更新映射时应用锁。因此,ConcurrentHashMap 允许对映射进行并发读写操作。SynchronizedHashMap (Collection.synchronizedHashMap()) 是 Collection 框架的一种方法。此方法对整个集合应用锁。因此,如果一个线程正在访问映射,则任何其他线程都无法访问同一个映射。序号 | 关键点 | ConcurrentHashMap | SynchronizedHashMap |1 | 实现 | 它是一个实现 ConcurrentHashMap 和 Serializable 接口的类。 | 它是一个 Collection 类中的方法。 |2 | 锁机制 | 锁定部分 | 锁定整个集合... 阅读更多

广告
© . All rights reserved.