摘要:
加锁和解锁 我们来看下ReentrantLock的基本用法 ThreadDomain35类 MyThread40_0类,增加线程 MyThread40_1类,减少线程 main方法,启动线程 输出结果如下 可以看到,lists的数量不会增加太多,也不会减少太多。当集合满,使增加线程等待,唤醒减少线程 阅读全文
摘要:
wait(),notify()和notifyAll()介绍 1.wait() 当线程执行wait()时,会把当前的锁释放,然后让出CPU,进入等待状态。 只能在同步方法调用wait()。 2.notify() 当执行notify/notifyAll方法时,会唤醒一个处于等待该对象锁的线程,然后继续往 阅读全文
摘要:
死锁 概念 当线程Thread 0持有锁Lock1,Thread 1持有锁Lock2,此时Thread 0申请Lock2锁的使用权,Thread 1申请Lock1锁的使用权,Thread 0和Thread 1都在无限地等待锁的使用权。这样就造成了死锁。 死锁是主要由于设计的问题。一旦出现死锁,死锁的 阅读全文
摘要:
volatile volatile是一种轻量同步机制。请看例子 MyThread25类 输出结果如下 为什么程序始终不结束?说明mt.setRunning(false);没有起作用。 这里我们说下Java内存模型(JMM) java虚拟机有自己的内存模型(Java Memory Model,JMM) 阅读全文
摘要:
多线程安全 脏读:多个线程对同一个对象的实例变量进行修改后访问,导致读到的数据是被修改过的。 实例 ThreadDomain16类 MyThread16_0类 MyThread16_1类 启动MyThread16_0 和MyThread16_1 线程 main方法 输出结果如下 理论上应该输出a n 阅读全文
摘要:
永 火 必 右 有 无 飞 耳 之 乎 者 也 哉 不 方 为 岂 君 臣 日 月 阅读全文
摘要:
博客园上传的图片,在github上无法显示。 在github项目下建立img文件夹,放上图片 两种方式 项目绝对路径 例如: "https://raw.githubusercontent.com/cjy513203427/cjy513203427.github.io/master/img/2019 阅读全文
摘要:
Thread类的实例方法 start() start方法内部会调用方法start方法启动一个线程,该线程返回start方法,同时Java虚拟机调用native start0启动另一个线程调用run方法,此时有两个线程并行执行; 我们来分析下start0方法,start0到底是如何调用run方法的 T 阅读全文
摘要:
1.线程和进程 1.1 进程 进程是操作系统的概念,我们运行的一个TIM.exe就是一个进程。 进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。在早期面向进程设计的计算机结构中,进程是程序的基本执行实体;在当代面向线程设 阅读全文