JAVA并发编程的艺术
文章平均质量分 90
别活在过去i
无人问津也好 技不如人也罢 你都要试着安静下来 去做自己该做的事情 而不是让烦恼和焦虑毁掉你本就不多的热情和定力 心可以碎 手不能停 该干什么干什么 在崩溃中继续进行 这才是一个成年人的素养!加油
展开
-
JAVA并发编程——死锁
死锁不仅在个人学习中,甚至在开发中也并不常见。但是一旦出现死锁,后果将非常严重。首先什么是死锁呢?打个比方,就好像有两个人打架,互相限制住了(锁住,抱住)彼此一样,互相动弹不得,而且互相欧气,你不松手我就不松手。好了谁也动弹不得。在多线程的环境下,势必会对资源进行抢夺。当两个线程锁住了当前资源,但都需要对方的资源才能进行下一步操作,这个时候两方就会一直等待对方的资源释放。这就形成了死锁。这些永远在互相等待的进程称为死锁进程。互斥:资源的锁是排他性的,加锁期间只能有一个线程拥有该资源。原创 2023-03-22 14:39:02 · 1069 阅读 · 0 评论 -
JAVA并发编程——创建线程的多种方式
通过传入Callable的任务给FutureTask,直接调用其run方法或者放入线程池执行,之后可以在外部通过FutureTask的get方法异步获取执行结果,因此,FutureTask非常适合用于耗时的计算,主线程可以在完成自己的任务后,再去获取结果。之后就会运行run中的代码。Callable位于java.util.concurrent包下,它也是一个接口,在它里面也只声明了一个方法,只不过这个方法call(),和Runnable接口中的run()方法不同的是,call()方法有返回值。原创 2023-03-22 14:25:05 · 1006 阅读 · 0 评论 -
JAVA并发编程——volatile
Java内存模型规定了所有的变量都存储在主内存中,每条线程还有自己的工作内存,线程的工作内存中保存了该线程中使用到的变量的主内存副本拷贝,线程对变量的所有操作都必须在工作内存中进行,而不能直接读写主内存。所以,就可能出现线程1改了某个变量的值,但是线程2不可见的情况。:每个处理器通过嗅探在总线上传播的数据来检查自己缓存的值是不是过期了,当处理器发现自己缓存行对应的内存地址被修改,就会将当前处理器的缓存行设置成无效状态,当处理器要对这个数据进行修改操作的时候,会强制重新从系统内存里把数据读到处理器缓存里。原创 2023-03-21 23:10:41 · 1141 阅读 · 0 评论 -
JAVA并发编程——synchronized关键字
Java语言为了解决并发编程中存在的原子性、可见性和有序性问题,提供了一系列和并发处理相关的关键字,比如volatilefinalconcurren包等。关键字在需要原子性、可见性和有序性这三种特性的时候都可以作为其中一种解决方案,看起来是“万能”的。的确,大部分并发控制操作都能使用synchronized来完成。海明威在他的《午后之死》说过的:“冰山运动之雄伟壮观,是因为他只有八分之一在水面上。”对于程序员来说,只是个关键字而已,用起来很简单。原创 2023-03-21 23:02:02 · 1105 阅读 · 0 评论 -
JAVA并发编程——线程的状态
虽然Java线程调度是系统自动完成的,但是我们还是可以“建议”系统给某些线程多分配一点执行时间,另外的一些线程则可以少分配一点——这项操作可以通过设置线程优先级来完成。Java语言一共设置了10个级别的线程优先级(Thread.MIN_PRIORITY至Thread.MAX_PRIORITY),在两个线程同时处于Ready状态时,优先级越高的线程越容易被系统选择执行。当创建一个线程时,其默认优先级是创建该线程的线程的优先级。线程是有状态的,并且这些状态之间也是可以互相流转的。方法为线程设置了新的优先级。原创 2023-03-21 22:47:36 · 922 阅读 · 0 评论 -
JAVA并发编程——多线程
由于内核线程的支持,每个轻量级进程都成为一个独立的调度单元,即使有一个轻量级进程在系统调用中阻塞了,也不会影响整个进程继续工作,但是轻量级进程具有它的局限性:首先,由于是基于内核线程实现的,所以各种线程操作,如创建、析构及同步,都需要进行系统调用。从广义上来讲,一个线程只要不是内核线程,就可以认为是用户线程(User Thread,UT),因此,从这个定义上来讲,轻量级进程也属于用户线程,但轻量级进程的实现始终是建立在内核之上的,许多操作都要进行系统调用,效率会受到限制。线程的实体包括程序、数据和TCB。原创 2023-03-21 22:35:59 · 1199 阅读 · 0 评论 -
Java并发编程——初识并发
并发(Concurrent)在操作系统中,是指一个时间段中有几个程序都处于已启动运行到运行完毕之间,且这几个程序都是在同一个处理机上运行。那么,操作系统是如何实现这种并发的呢?现在我们用到操作系统,无论是Windows、Linux还是MacOS等其实都是多用户多任务分时操作系统。使用这些操作系统的用户是可以“同时”干多件事的。但是实际上,对于单CPU的计算机来说,在CPU中,同一时间是只能干一件事儿的。原创 2023-03-21 22:30:04 · 556 阅读 · 0 评论