#死锁:锁只能抢一次,释放后被其他人抢 from threading import Thread,Lock,current_thread import time class MyThread(Thread): def run(self): self.f1() self.f2() def f1(sel ...
分类:
编程语言 时间:
2020-03-28 23:43:26
阅读次数:
94
class Ticket implements Runnable { private static int tick = 100; boolean flag = true; @Override public void run() { if (flag) { while (true) { synchr ...
分类:
编程语言 时间:
2020-03-28 21:44:19
阅读次数:
66
Go 语言锁机制 Go 语言互斥锁 Go语言的sync包中实现了两种锁 Mutex (互斥锁)和 RWMutex (读写锁),其中 RWMutex 是基于 Mutex 实现的,只读锁的实现使用类似引用计数器的功能。 互斥锁 Mutex 是互斥锁,有 Lock()加锁、Unlock()解锁两个方法,使 ...
分类:
编程语言 时间:
2020-03-27 10:54:44
阅读次数:
78
死锁产生的四个条件: 1、互斥条件 一个进程占有一个资源这时别的进程对该资源进行申请时,进入等待状态 2、请求与保持 一个进程拥有一个资源,这时它又向系统申请一个资源,而该资源却被其他进程所拥有,这时候它原本拥有的资源保持不释放。 3、不可剥夺条件 一个进程拥有的资源在未使用完时其他线程不能够强行剥 ...
分类:
其他好文 时间:
2020-03-25 21:32:52
阅读次数:
69
1.进程与线程 2.线程与进程的关系,区别,优缺点 3.并发与并行 4.线程的生命周期和状态 5.什么是上下文切换 6.什么是线程死锁,怎么避免线程死锁 7.sleep()方法与wait()方法的区别 8.为什么调用start()方法会自动调用run()方法,为什么不直接调用run()方法 sync ...
分类:
其他好文 时间:
2020-03-23 16:56:59
阅读次数:
61
1.简介 可重入锁ReentrantLock自 JDK 1.5 被引入,功能上与synchronized关键字类似。所谓的可重入是指,线程可对同一把锁进行重复加锁,而不会被阻塞住,这样可避免死锁的产生。ReentrantLock 的主要功能和 synchronized 关键字一致,均是用于多线程的同 ...
分类:
编程语言 时间:
2020-03-22 19:24:01
阅读次数:
85
目录 "问题现场" "线程死锁 vs 线程死循环" "排查Java进程导致CPU持续高的方法" "Tomcat的CPU占用高的原因总结" 问题现场 测试环境tomcat进程占用CPU一直持续99%,但是通过jstack查看log,也没有任何线程死锁的情况。 此时通过$catalina_home/bi ...
分类:
其他好文 时间:
2020-03-21 00:02:16
阅读次数:
90
1:死锁 多个线程(至少2个)竞争多个(至少2个)独占资源时,例如:线程1 占有 资源a,同时又去申请资源b, 线程2占有资源b,同时又去申请a,这样线程1 和 2 就会出现死锁,如果没有外力的情况下,这种情况永远不会解开。 发生死锁必须具备的条件: a:独占资源 资源必须是互斥的,同一时刻只能有有 ...
分类:
其他好文 时间:
2020-03-20 21:54:13
阅读次数:
52
互斥条件:一个资源每次只能被一个进程使用。 请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。 不剥夺条件:进程已获得的资源,在末使用完之前,不能强行剥夺。 循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。 锁的类别有两种 1. 从数据库系统的角度来看:分为独占锁(即 ...
分类:
其他好文 时间:
2020-03-18 21:40:25
阅读次数:
62
慢查询的原因 1、没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷) 2、I/O吞吐量小,形成了瓶颈效应。 3、没有创建计算列导致查询不优化。 4、内存不足 5、网络速度慢 6、查询出的数据量过大(可以采用多次查询或其他的方法降低数据量) 7、锁或者死锁(这也是查询慢最常见的问题, ...
分类:
其他好文 时间:
2020-03-18 20:10:34
阅读次数:
112