
Thread
krismile__qh
坚持,坚持,不败的代名词!
展开
-
线程安全问题synchronized和Lock接口
一、线程安全问题1.产生原因 我们使用java多线程的时候,最让我们头疼的莫过于多线程引起的线程安全问题,那么线程安全问题到底是如何产生的呢?究其本质,是因为多条线程操作同一数据的过程中,破坏了数据的原子性。所谓原子性,就是不可再分性。有物理常识的小伙伴可能要反驳了,谁说原子不可再分?原子里边还有质子和中子。我们不在这里探讨物理问题,我确实也没深究过为什么被称为原子性,也许是这个原则出现...原创 2019-04-03 20:47:12 · 803 阅读 · 0 评论 -
如何停止一个正在运行的线程?
如何停止一个正在运行的线程呢? 1、调用stop方法,可以停止线程,但是该线程是戛然而止 -- 城管的暴力执法 一个方法,里面的动作执行了一半,被终止了,这种方案是不可取的。 具有固有的不安全性 2、建议使用标识符的方法 指定一个变量,想让其停止的时候,将变量重新赋值。...原创 2019-04-04 11:56:05 · 2306 阅读 · 0 评论 -
Java中sleep方法和wait方法的区别---线程
Java中sleep方法和wait方法的区别最主要是sleep方法没有释放锁,而wait方法释放了锁,使得其他线程可以使用同步控制块或者方法(锁代码块和方法锁)。 wait,notify和notifyAll只能在同步控制方法或者同步控制块里面使用,而sleep可以在任何地方使用(使用范围) 。 sleep必须捕获异常,而wait,notify和notifyAll不需要捕获...原创 2019-04-04 15:28:32 · 649 阅读 · 0 评论 -
线程内存 ---- 栈内存都是线程私有的
多线程执行时,在栈内存中,其实每一个执行线程都有一片自己所属的栈内存空间。进行方法的压栈和弹栈。当执行线程的任务结束了,线程自动在栈内存中释放了。但是当所有的执行线程都结束了,那么进程就结束了。...原创 2019-04-07 11:40:06 · 3552 阅读 · 0 评论 -
线程池
1,线程池的概念线程池,其实就是一个容纳多个线程的容器,其中的线程可以反复使用,省去了频繁创建线程对象的操作,无需反复创建线程而消耗过多资源。最初是程序员自己开发线程池:用ArrayList<Thread>集合存储多个线程,只要ArrayList在,线程就不会消失!程序一开始,创建多个线程对象,存储在集合中(add(new Thread())),每次需要线程的时候从集合中取线程...原创 2019-04-07 15:08:01 · 492 阅读 · 0 评论 -
死锁
同步锁使用的弊端:当线程任务中出现了多个同步(多个锁)时,如果同步中嵌套了其他的同步。这时容易引发一种现象:程序出现无限等待,这种现象我们称为死锁。这种情况能避免就避免掉。代码示例:synchronzied(A锁){ synchronized(B锁){ }}图示:...原创 2019-04-07 16:46:36 · 427 阅读 · 0 评论 -
等待wait唤醒notify机制
等待wait唤醒notify机制(针对锁对象)一、概念在开始讲解等待唤醒机制之前,有必要搞清一个概念——线程之间的通信:多个线程在处理同一个资源,但是处理的动作(线程的任务)却不相同。通过一定的手段使各个线程能有效的利用资源。而这种手段即—— 等待唤醒机制。等待唤醒机制所涉及到的方法:wait() :等待,将正在执行的线程释放其执行资格 和 执行权,并存储到线程池中。 notif...原创 2019-04-07 20:12:00 · 1007 阅读 · 0 评论