摘要:
同步集合与并发集合都为多线程和并发提供了合适的线程安全的集合,不过并发 集合的可扩展性更高。在 Java1.5 之前程序员们只有同步集合来用且在多线程并发 的时候会导致争用,阻碍了系统的扩展性。Java5 介绍了并发集合像 ConcurrentHashMap,不仅提供线程安全还用锁分离和内部分区等现 阅读全文
posted @ 2020-06-07 16:20
咔啡
阅读(473)
评论(0)
推荐(0)
摘要:
不对,如果两个对象 x 和 y 满足 x.equals(y) == true,它们的哈希码(hash code) 应当相同。Java 对于 eqauls 方法和 hashCode 方法是这样规定的:(1)如果两个 第 223 页 共 485 页对象相同(equals 方法返回 true),那么它们的 阅读全文
posted @ 2020-06-07 16:19
咔啡
阅读(677)
评论(0)
推荐(0)
摘要:
每一个线程都是有优先级的,一般来说,高优先级的线程在运行时会具有优先权, 但这依赖于线程调度的实现,这个实现是和操作系统相关的(OS dependent)。我 们可以定义线程的优先级,但是这并不能保证高优先级的线程会在低优先级的线 程前执行。线程优先级是一个 int 变量(从 1-10),1 代表最 阅读全文
posted @ 2020-06-07 16:16
咔啡
阅读(533)
评论(0)
推荐(0)
摘要:
notify() 方法不能唤醒某个具体的线程,所以只有一个线程在等待的时候它才有 用武之地。而 notifyAll()唤醒所有线程并允许他们争夺锁确保了至少有一个线程 能继续运行。 阅读全文
posted @ 2020-06-07 16:14
咔啡
阅读(189)
评论(0)
推荐(0)
摘要:
当线程间是可以共享资源时,线程间通信是协调它们的重要的手段。 Object 类中wait()\notify()\notifyAll()方法可以用于线程间通信关于资源的锁的状态。 阅读全文
posted @ 2020-06-07 16:11
咔啡
阅读(1598)
评论(0)
推荐(0)
摘要:
Synchronized 关键字,Lock 锁实现,分布式锁等。 阅读全文
posted @ 2020-06-07 16:10
咔啡
阅读(448)
评论(0)
推荐(0)
摘要:
1、CountDownLatch 简单的说就是一个线程等待,直到他所等待的其他线程都执 行完成并且调用 countDown()方法发出通知后,当前线程才可以继续执行。 2、cyclicBarrier 是所有线程都进行等待,直到所有线程都准备好进入 await()方 法之后,所有线程同时开始执行! 3 阅读全文
posted @ 2020-06-07 16:08
咔啡
阅读(324)
评论(0)
推荐(0)
摘要:
Java 是一个近乎纯洁的面向对象编程语言,但是为了编程的方便还是引入了基本 数据类型,但是为了能够将这些基本数据类型当成对象操作,Java 为每一个基本 数据类型都引入了对应的包装类型(wrapper class),int 的包装类就是 Integer, 从 Java 5 开始引入了自动装箱/拆箱 阅读全文
posted @ 2020-06-07 16:07
咔啡
阅读(219)
评论(0)
推荐(0)
摘要:
使当前线程从执行状态(运行状态)变为可执行态(就绪状态)。 当前线程到了就绪状态,那么接下来哪个线程会从就绪状态变成执行状态呢?可 能是当前线程,也可能是其他线程,看系统的分配了。 阅读全文
posted @ 2020-06-07 16:06
咔啡
阅读(848)
评论(0)
推荐(0)
摘要:
2 << 3(左移 3 位相当于乘以 2 的 3 次方,右移 3 位相当于除以 2 的 3 次方)。 补充:我们为编写的类重写 hashCode 方法时,可能会看到如下所示的代码,其实我们不太理解为什么要使用这样的乘法运算来产生哈希码(散列码),而且为什么这个数是个素数,为什么通常选择 31 这个数 阅读全文
posted @ 2020-06-07 16:03
咔啡
阅读(249)
评论(0)
推荐(0)
摘要:
对于可见性,Java 提供了 volatile 关键字来保证可见性。 当一个共享变量被 volatile 修饰时,它会保证修改的值会立即被更新到主存,当 有其他线程需要读取时,它会去内存中读取新值。 从实践角度而言,volatile 的一个重要作用就是和 CAS 结合,保证了原子性,详 细的可以参见 阅读全文
posted @ 2020-06-07 16:02
咔啡
阅读(282)
评论(0)
推荐(0)
摘要:
数组没有 length()方法,有 length 的属性。 String 有 length()方法。JavaScript中,获得字符串的长度是通过 length 属性得到的,这一点容易和 Java 混淆。 阅读全文
posted @ 2020-06-07 16:01
咔啡
阅读(433)
评论(0)
推荐(0)
摘要:
在 Java 中可以有很多方法来保证线程安全——同步,使用原子类(atomic concurrent classes),实现并发锁,使用 volatile 关键字,使用不变类和线程安 全类。 阅读全文
posted @ 2020-06-07 15:59
咔啡
阅读(1110)
评论(1)
推荐(0)
摘要:
JVM 中类的装载是由类加载器(ClassLoader)和它的子类来实现的,Java 中的 类加载器是一个重要的 Java 运行时系统组件,它负责在运行时查找和装入类文件 中的类。 由于 Java 的跨平台性,经过编译的 Java 源程序并不是一个可执行程序,而是一 个或多个类文件。当 Java 程 阅读全文
posted @ 2020-06-07 15:58
咔啡
阅读(216)
评论(0)
推荐(0)
摘要:
阻塞式方法是指程序会一直等待该方法完成期间不做其他事情,ServerSocket 的 accept()方法就是一直等待客户端连接。这里的阻塞是指调用结果返回之前,当前 线程会被挂起,直到得到结果之后才会返回。此外,还有异步和非阻塞式方法在 任务完成前就返回。 阅读全文
posted @ 2020-06-07 15:57
咔啡
阅读(957)
评论(0)
推荐(0)
摘要:
首先明确的是,char的长bai度是不可变du的,而varchar的长度是可变的,定义一个char[10]和varchar[10],如果zhi存进去的是‘abcd’,那么daochar所占的长度依然为10,除了字符‘abcd’外,后面跟六个空格,而varchar就立马把长度变为4了,取数据的时候,c 阅读全文
posted @ 2020-06-07 15:56
咔啡
阅读(932)
评论(0)
推荐(0)

浙公网安备 33010602011771号