共 6 篇文章 |
|
从横向来看,线程A和线程B之间进行了一次通信,线程A在写volatile变量时,实际上就像是给B发送了一个消息告诉线程B你现在的值都是旧的了,然后线程B读这个volatile变量时就像是接收了线程A刚刚发送的消息。为了实现volatile的内存语义,JMM会限制特定类型的编译器和处理器重排序,JMM会针对编译器制定volatile重排序规则表:volatile重排序规则... 阅45 转0 评0 公众公开 20-02-24 22:13 |
阅178 转0 评0 公众公开 20-02-24 21:47 |
threadlocal.}}class TestLocal implements Runnable { ThreadLocal<String> localName = new ThreadLocal<>();//从当前线程取出ThreadLocalMapif (map != null) { ThreadLocalMap.Entry e = map.getEntry(this); //以当前ThreadLocal对象为key取出ThreadLocalMap.Entryif (e != null) { T result = (T)e.value;return result; } }... 阅40 转0 评0 公众公开 20-02-24 21:41 |
阅47 转0 评0 公众公开 20-02-24 19:25 |
//调用notify()后,当前线程并不会立即释放锁,而是继续执行当前代码,直到synchronized中的代码全部执行完毕, ThreadDemo.obj.notify(); try { ThreadDemo.obj.wait(); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } } } } public static void main(String[] args) { new Thread(new T... 阅72 转0 评0 公众公开 20-02-24 16:14 |