Java并发程序基础

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java并发程序基础相关的知识,希望对你有一定的参考价值。

Thread.stop()

直接终止线程,并且会立即释放这个线程所持有的锁。

Thread.interrupt()

并不会是线程立即退出,而是给线程发送一个通知,告知目标线程,有人希望你退出啦,至于目标线程接到通知后会如何处理,则完全由目标线程自行决定。

Thread.sleep()

使当前线程休眠若干时间,如果线程sleep时被中断,就会产生InterruptedException

wait()和notify()方法不属于Thread,而是Object

T1

T2

获取object监视器

 

Object.wait()

 

释放object监视器

 

 

获得object监视器

 

Object.notify()

等待object监视器

释放object监视器

重获object监视器

 

继续执行

 

Object.wait()和Thread.sleep()都可以让线程仍待若干时间,除了wait()可以被唤醒外,另一个主要区别就是wait()方法会释放目标对象的锁,而sleep()方法不会释放任何资源。

join()方法的本质是让调用线程wait()在当前线程对象实例上。

yield()会使当前线程让出CPU,但让出CPU后,还会进行CPU资源的争夺。

volatile关键字声明一个变量的时候,等于告诉虚拟机,这个变量极有可能被某些程序或者线程修改。为了确保这个变量被修改后,应用程序范围内的所有线程都能够看到这个改动,虚拟机就必须采用一些特殊的手段,保证这个变量的可见性等他点,但是并不能替代锁,也无法保证一些复合操作的原子性。

以上是关于Java并发程序基础的主要内容,如果未能解决你的问题,请参考以下文章

Android面试过程描写叙述

集合框架描写叙述

[javase学习笔记]-6.2 类与对象的关系

算法拾遗(java描写叙述)--- 插入排序(直接插入排序希尔排序)

JAVA 模拟瞬间高并发

算法拾遗(java描写叙述)--- 选择排序(直接选择排序堆排序)