浅谈对守护线程的理解

为所有非守护线程提供服务的线程,也称后台线程,任何一个守护线程都是整个JVM中所有非守护线程的保姆。

并发

浅谈对线程安全的理解

当多个线程访问一个对象时,如果不进行额外的同步控制或其他的协调操作,调用这个对象的行为都可以获得正确的结果,我们就说这个对象是线程安全的。

并发

sleep(),wait(),join(),yield()的区别

sleepwaitjoinyield 锁池所有需要竞争同步锁的线程都会放在锁池当中,比如当前对象的锁已经被其中一个线程得到,则其他线程需要在这个锁池等待,当前面的线程释放同步锁后锁池中的线程去竞争同步锁,当某个线程得到后会进入就绪队列进行等待cpu资源分配。 等待池当我们调用wait()方法后,线程会放到等待池当中,等待池的线程是不会去竞争同步锁。只有调用了notify()或notify...
并发

为什么调用 start() 方法时会执行 run() 方法,为什么不能直接调用 run() 方法?

new 一个 Thread,线程进入了新建状态。调用 start()方法,会启动一个线程并使线程进入了就绪状态,当分配到时间片后就可以开始运行了。 start() 会执行线程的相应准备工作,然后自动执行 run() 方法的内容,这是真正的多线程工作。 但是,直接执行 run() 方法,会把 run() 方法当成一个 main 线程下的普通方法去执行,并不会在某个线程中执行它,所以这并不是...
并发

线程的生命周期包括哪几个阶段

线程的生命周期包含5个阶段,包括:新建、就绪、运行、阻塞、销毁。

并发

countDownLatch、CyclicBarrier、Semaphore

countDownLatch简介 countDownLatch这个类使一个线程等待其他线程各自执行完毕后再执行。 是通过一个计数器来实现的,计数器的初始值是线程的数量。每当一个线程执行完毕后,计数器的值就-1,当计数器的值为0时,表示所有线程都执行完毕,然后在闭锁上等待的线程就可以恢复工作了。 减法计数器 原理countDownLatch.countDown(); // 数量-1count...
并发

Callable

Callable简介: 可以有返回值 可以抛出异常 方法不同,Runnable 是 run(), Callable 是call() 1234567891011121314151617181920212223242526public class CallableTest { public static void main(String[] args) throws Exe...
并发

8锁问题

待完善…

并发

synchronized和Lock区别

简述 synchronized 和 Lock 区别…

并发

Java高并发之锁总结

Java线程锁机制是怎样的? JAVA的锁就是在对象的Markword中记录一个锁状态。无锁,偏向锁,轻量级锁,重量级锁对应不同的锁状态。 JAVA的锁机制就是根据资源竞争的激烈程度不断进行锁升级的过程。 锁的分类1. 乐观锁与悲观锁 乐观锁 对共享数据进行访问时,乐观锁总是认为不会有其他线程修改数据修改数据。 于是直接执行操作,只是在更新时检查数据是否已经被其他线程修改。 如果没...
并发