热文幻读和不可重复读区别

1) "不可重复读" 是指在一个事务内,多次读同一数据。在这个事务还没有结束时,另外一个事务也访问该同一数据。那么,在第一个事务中的两次读数据之间,由于第二个事务的修改,...

热文自旋锁解决StackOverflowError案例

问题介绍:笔者负责的一个Java Web项目在启动的时候,需要有一些初始化操作,而接下来的代码的执行必须要等到相关初始化操作完成。为了实现这个等待的功能,这个项目之前的...

热文Java内存模型

`Java内存模型`规范了Java虚拟机与计算机内存是如何协同工作的。Java虚拟机是一个完整的计算机的一个模型,因此这个模型自然也包含一个内存模型——又称为Java内存...

热文sleep()方法与wait方法的区别

在面试的时候,我们经常会遇到一个问题:sleep()方法与wait()方法区别。二者的作用都是进行等待。区别在于 1、sleep()方法是Thread对象中定义的方法,而...

热文同步方法与同步代码块的区别

在面试中,我们经常遇到的一个问题是,同步方法与同步代码块的区别。或者另一种提问方式,在实际开发中,是使用同步代码块好,还是使用同步方法好。 这个考验的是实际上是读者对ja...

热文四种不同的同步代码块

Java中的同步块用`synchronized`标记。同步块在Java中是同步在某个对象上,事实上在java中,任何一个对象都可以作为一个锁。所有同步在一个对象上的同步块...

热文同步代码块与隐式锁

这段代码保证了count++操作可以得到正确的累加结果。 在java并发编程中,这段代码称之为一个`同步代码块`。同步代码块的标准语法如下:

热文线程安全及不可变性

当多个线程同时访问同一个资源,并且其中的一个或者多个线程对这个资源进行了写操作,才会产生竞态条件。多个线程同时读同一个资源不会产生竞态条件。

热文多线程共享资源问题演示

Java同步代码块(`synchronized block`)和锁是用来避免多个线程对共享资源产生竞争,导致运行结果与期望不符合的一种机制。同步代码块和锁是Java并发编...

热文ThreadGroup

线程组(`ThreadGroup`)表示一个线程的集合。此外,线程组也可以包含其他线程组。线程组构成一棵树,在树中,除了初始线程组(system)外,每个线程组都有一个父...

热文守护线程

在Java中有两类线程:User Thread(用户线程)、Daemon Thread(守护线程) Daemon的作用是为其他线程的运行提供服务,比如说GC线程。其实U...

热文线程的状态

RUNNABLE这个名字很具有欺骗性,很容易让人误以为处于这个状态的线程正在运行。事实上,这个状态只是表示,线程是可运行的。我们已经无数次提到过,一个单核CPU在同一时刻...

热文线程的优先级

Java中Thread对象有一个`优先级`的概念,优先级被划分10个级别,创建线程的时候,如果没有指定优先级,默认是5。主线程的优先级也是5。优先级高的线程会比优先级低的...

热文Thread类的join方法

Thread类有一个`join`方法,其作用是:在A线程中调用了另外一个线程对象B的join方法时,那么A线程必须等待B线程执行完才能继续往下执行。

热文线程的中断

中断(`interrupt`)表示一个线程应该停止当前所做的事而去另外一件事。通常中断是一个线程给另外一个线程发送中断信号,程序员自行决定如如何进行响应,也就是说收到中断...

热文线程的休眠

线程对象一旦调用其`start`方法之后,就会运行,运行的就是`run`方法中的代码,等到`run`方法中的代码运行结束,线程就执行完成。

热文线程的名字

当创建一个线程的时候,如果我们不给线程明确的起一个名字的话,JVM默认会给其指定一个默认的名字。当然我们明确的可以给线程起一个名字。它有助于我们区分不同的线程,这在我们查...

热文并发编程模型

并发系统可以采用多种`并发编程模型`来实现。并发模型指定了系统中的线程如何通过协作来完成分配给它们的作业。不同的并发模型采用不同的方式拆分作业,同时 线程间的协作和交互方...

热文使用多线程的代价

从一个单线程的应用到一个多线程的应用并不仅仅带来好处,它也会有一些代价。不要仅仅为了使用多线程而使用多线程。而应该明确在使用多线程时能多来的好处比所付出的代价大的时候,才...