java-concurrency
并发, 多线程
James_si
这个作者很懒,什么都没留下…
展开
-
并发-volatile
文章目录引入一个示例cpu,内存如果解决数据不一致的问题并发安全的三个特性volatile使用场景 引入一个示例 package com.mine; public class VolatileTest { // private static volatile int INIT_VALUE = 0; private static int INIT_VALUE = 0; public static void main(String[] args) { // reader new T原创 2021-03-29 16:32:06 · 49 阅读 · 0 评论 -
并发-单例模式
@toc 懒汉模式 无线程安全问题, 但是没办法懒加载 package com.mine; /** * 饿汉模式, 无法懒加载 */ public class SingletonObject { private static final SingletonObject instance = new SingletonObject(); private SingletonObject(){ } public static SingletonObject getinstance(){原创 2021-03-26 13:42:13 · 66 阅读 · 0 评论 -
thread-获取线程内部异常
在start之前通过setUncaughtExceptionHandler获取线程内部的异常 public class Demo { public static void main(String[] args) { Thread t = new Thread(() -> { int result = 1/0; System.out.println(result); }); // 获取异常原创 2021-03-23 23:09:00 · 197 阅读 · 0 评论 -
thread-(getStackTrace)查看方法调用链
通过getStackTrace查看方法的调用链 如下Demo类的main调用Test1的test1方法, test1方法调用Test2类的test2方法 package stack_demo; public class Demo { public static void main(String[] args) { new Test1().test1(); } } package stack_demo; public class Test1 {原创 2021-03-23 23:08:33 · 414 阅读 · 0 评论 -
thread-给程序添加退出钩子
在程序异常退出或者kill的时候, 发邮件通知管理员,主动通知其他调用程序,释放资源等操作 但是用kill -9是不行的,这也是我们平时结束程序禁止用kill -9的原因 import java.util.Optional; public class Demo { public static void main(String[] args) { Runtime.getRuntime().addShutdownHook(new Thread(() -> {原创 2021-03-23 22:26:54 · 147 阅读 · 0 评论 -
thread-线程之间通讯wait,notify,notifyAll
线程通讯jstack查看死锁线程通讯单生产者消费者多生产者消费者 jstack查看死锁 多个线程共同去抢多个锁的时候,容易出现死锁,通过jstack命令可以查看死锁。 jstack pid 线程通讯 wait,notify, nofityAll是和同步synchronized一同使用的, wait的意思就是当前线程放弃了这个锁 单生产者消费者 public class SimpleProducerAndConsumer { private final Object LOCK = new原创 2021-03-22 21:52:19 · 164 阅读 · 0 评论 -
thread-interrupt
被打断的线程在使用sleep,join, wait方法时候都能他受到InterruptedException打断信号抛出异常 打断sleep的线程 Thread t = new Thread(() -> { while(true){ } }); t.start(); try { // 如果直接打断,可能还没有起来呢, 所以这里简单休眠一下 Thread.sleep(100); } catch (InterruptedExcep原创 2021-03-21 23:45:07 · 96 阅读 · 0 评论 -
thread-synchronized线程同步
@TOC 通过标识关闭 public class Test { static final Object monitor = new Object(); public static void main(String[] args) { InnerThread thread = new InnerThread(); thread.start(); try { Thread.sleep(10_000); }原创 2021-03-21 22:25:52 · 170 阅读 · 0 评论