摘要: 线程死锁概念 两个线程A/B,A线程掌握着实例1的锁,要访问实例2的synchronized方法,但是实例2的锁被B所掌握着,然而B这时候又要访问实例1的synchronized方法,两个线程一直等着对方释放实例1/实例2的锁,造成程序无法进行下去,这种现象称为线程访问的死锁 代码示例 阅读全文
posted @ 2018-05-16 21:40 无名草110 阅读(170) 评论(0) 推荐(0) 编辑
摘要: 实现需求: 开启2个线程,1个线程对某个int类型成员变量加1,另外1个减1,但是要次序执行,即如果int型的成员变量是0,则输出01010101这样的结果 代码如下 需求稍作改变,变成: 开启4个线程,2个线程对某个int类型成员变量加1,另外2个减1,但是要次序执行,即如果int型的成员变量是0 阅读全文
posted @ 2018-05-16 21:12 无名草110 阅读(296) 评论(0) 推荐(0) 编辑
摘要: 看一个例子,背景是,银行卡里有1000块钱,在柜台取800块钱,在提款机取800块钱,理论上来说,这个是不允许的 看看实现代码 执行的结果是 1000块钱的余额居然真的取出2次800块钱了 问题的根源在于,2个线程会同时访问一个实例的某个成员变量,2条线程判断条件时成员变量的值均可能是还没取钱时候的 阅读全文
posted @ 2018-05-16 16:05 无名草110 阅读(140) 评论(0) 推荐(0) 编辑
摘要: 1.什么叫线程:线程就是程序中单独顺序的流控制。线程本身不能运行,它只能用于程序中。Java中如果我们自己没有产生线程,那么系统就会给我们产生一个线程,这个线程叫主线程,main方法就在主线程运行。2.线程与进程的区别:(1)多个进程的内部数据和状态都是完全独立的,而... 阅读全文
posted @ 2018-05-16 09:47 无名草110 阅读(150) 评论(0) 推荐(0) 编辑