本博客系列是学习并发编程过程中的记录总结。由于文章比较多,写的时间也比较散,所以我整理了个目录贴(传送门),方便查阅。 "并发编程系列博客传送门" 本文参考了 "[Java多线程进阶(六)—— J.U.C之locks框架:AQS综述(1)" ]和 "Java技术之AQS详解" 两篇文章。 AQS 简 ...
分类:
其他好文 时间:
2020-02-21 18:06:09
阅读次数:
83
1 package cn.test.muke; 2 3 4 //军队线程 5 //模拟作战双方的行为 6 public class ArmyRunnable implements Runnable{ 7 8 // volatile保证了线程可以正确的读取其他线程写入的值 9 // 可见性 refer ...
分类:
编程语言 时间:
2020-02-19 17:30:46
阅读次数:
91
一、 竞态 状态变量(state variable):类的实例变量,静态变量。 共享变量(shared variable):可以被多个线程共同访问的变量。 __竞态(race condition)__:是指计算的正确性依赖于相对时间顺序(Relative Timing)或者线程的交错(Interle ...
分类:
编程语言 时间:
2020-02-16 20:44:36
阅读次数:
77
详细代码在文章底部 目录 "基础概念" "进程与线程" "单线程与多线程" "实现线程的4中方式" "thread.start()和runnable.run()的区别" 和runnable.run()的区别) "Thread和Runnable的异同" "线程的基本操作" "线程的优先级与守护线程" ...
分类:
编程语言 时间:
2020-02-14 22:13:32
阅读次数:
94
一、基本概念 __进程(process)__:程序的运行实例。进程与程序之间的关系就好比播放中的视频与对应的视频文件。进程是程序向操作系统申请资源(如内存空间和文件句柄)的基本单位。 __线程(thread)__:进程中可独立执行的最小单位。一个进程可以包含多个线程,同一个进程中的所有线程共享该进程 ...
分类:
编程语言 时间:
2020-02-14 22:11:08
阅读次数:
104
1.线程加锁 多个线程需要共享对同一个数据的访问。如果每个线程都会调用一个修改共享数据状态的方法,那么,这些线程将会互相影响对方的运行。在Java语言中,引入对象互斥锁的概念,保证共享数据操作的完整性。每个对象都对应一个可称为“互斥锁”的标记,这个标记保证在任一时刻,只能有一个线程访问对象。就像上一 ...
分类:
编程语言 时间:
2020-02-14 14:40:35
阅读次数:
88
单线程程序:处理流程始终一条线的程序。例如:无论是调用方法,还是执行for循环,if条件分支语句。甚至更复杂的处理,都不会对这条长线产生影响。在单线程程序中,“在某一时间点执行的处理”只有一个。“正在执行程序的主体”称为线程。 多线程程序:由多个线程组成的程序。例如:GUI应用程序,耗时的I/O处理 ...
分类:
编程语言 时间:
2020-02-14 00:55:37
阅读次数:
72
上面是第5讲4:5511-构造thread的时候,传入stacksize代表该线程占用的stack大小如果没指定,默认是0,0代表会忽略该参数,该参数会被jni函数使用;该参数和平台有关5:5411-所以stacksize一般用虚拟机参数指定。6:5014-join..线程A里调用线程B, 即B.j ...
分类:
编程语言 时间:
2020-02-14 00:30:07
阅读次数:
106
1.创建新线程 ①继承自Thread 将类声明为java.lang.Thread的子类并重写run方法 public class MyThread extends Thread { @Override public void run() { //线程体的执行方法 //线程体 for(int i = ...
分类:
编程语言 时间:
2020-02-13 13:04:39
阅读次数:
70