
并发编程
锦衣素颜
这个作者很懒,什么都没留下…
展开
-
并发笔记四:锁机制(二)
目录 并发笔记一:什么是线程不安全? 并发笔记二:线程中断机制 并发笔记三:线程的生命周期 并发笔记四:锁机制(一) 1.关键字 volatile 被volatile修饰的变量都是易变的、不稳定的。所以访问volatile不存在缓存等优化机制,每次访问都是直接从内存地址去读取值。 虽说每次读取volatile变量都是从内存地址中读取,但是对于修改完的volatile变量要马上将其刷新到主内存中,也就是volatile提供了内存可见性,而对于原子性,volatile对于单个的读写具有原子性,而对于多个原创 2020-09-22 17:20:13 · 261 阅读 · 0 评论 -
并发笔记四:锁机制(一)
1.隐式锁 隐式锁,又称线程同步,即synchronized修饰的方法或代码块。 修饰方法 修饰方法时,放在范围修饰符(public等)之后,表示该方法线程同步。默认锁的对象就是当前对象本身。 private synchronized static void addOne(){ count ++; } 修饰代码块 修饰代码块时,对某一代码块使用synchronized(Object),指定加锁对象 private synchronized原创 2020-09-21 17:21:38 · 210 阅读 · 0 评论 -
并发笔记三:线程的生命周期
线程的生命周期中有5中状态:new、runnable、running、blocked、dead。 新建(new):即Thread t = new Thread();此时线程未启动,但占用内存空间。 就绪(runnable):即t.start();线程已被启动,等待被分配给CPU时间片,此时线程是等待阶段,不一定会被立即执行。 运行中(running):线程获得CPU资源正在执行任务,除非线程自动放弃CPU资源或有优先级更高的线程进入,线程将一直运行到结束。 阻塞(blocked):某种原因让线程让出CP原创 2020-09-15 16:41:35 · 179 阅读 · 0 评论 -
并发笔记二:线程中断机制
有两种方法我们可以使用线程的停止或中断。 1.调用 Thread.stop()方法 调用Thread.stop();方法会强迫停止一个线程,并创建一个新的ThreadDeath对象作为异常。捕获ThreadDeath异常后必须重新抛出该对象才能真正中止线程。 Thead.stop()不安全,不建议使用。 2.利用Thread.interrupt()方法和机制 java的中断机制是一种协作机制,调用Thread.interrupt()并不会直接中断另一线程,需要该线程自己处理中断。 可以这样理原创 2020-09-15 16:02:11 · 203 阅读 · 0 评论 -
并发笔记一:什么是线程不安全?
1. 概念 线程不安全就是不提供数据访问保护,有可能出现多个线程先后更改数据造成所得到的数据是脏数据。<br/> 2. 举个栗子 话不多说,直接上代码 public class ConcurrencyTest { //请求总数 private static int clientTotal = 10000; //同时并发执行的线程数 public static int threadTotal = 200; public static int count原创 2020-09-04 09:45:46 · 439 阅读 · 0 评论