热文java并发包--线程池

在之前的所有案例中,我们总是通过启动一个新的线程来执行新的任务。对于一些小的应用来说,这是OK的,但是对于一些大型的应用来说,这是不太合适的。

热文CyclicBarrier

`CyclicBarrier`字面意思回环栅栏,通过它可以实现让一组线程等待至某个状态之后再全部同时执行。叫做回环是因为当所有等待线程都被释放以后,CyclicBarri...

热文Semaphore

Semaphore翻译成字面意思为 信号量,Semaphore可以控同时访问的线程个数,通过 acquire() 获取一个许可,如果没有就等待,而 release() 释...

热文CountDownLatch

CountDownLatch类位于java.util.concurrent包下,利用它可以实现类似计数器的功能。比如有一个任务A,它要等待其他4个任务执行完毕之后才能执行...

热文Condition接口

Condition的作用是替代Object的监视器方法监视器方法(wait、notify 和 notifyAll),其主要是与Lock配合使用。

热文Lock接口与ReentrantLock

锁是用来控制多个线程访问共享资源的方式,一般来说,一个锁能够防止多个线程同时访问共享资源(但是有些锁可以允许多个线程并发的访问共享资源,比如读写锁)。

热文Unsafe类介绍

很多低级语言中可用的技巧在Java中都是不被允许的。Java是一个安全的开发工具,它阻止开发人员犯很多低级的错误,而大部份的错误都是基于内存管理方面的。

热文自旋锁解决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默认会给其指定一个默认的名字。当然我们明确的可以给线程起一个名字。它有助于我们区分不同的线程,这在我们查...