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