
并发
文章平均质量分 53
nothasson
这个作者很懒,什么都没留下…
展开
-
多线程会导致的问题
多线程会导致的问题一共有几类线程安全问题哪些场景需要额外注意县城问题上下文切换线程安全多线程像单线程一样能够工作,不需要额外的操作。全都线程安全的时候,速度会慢,成本大。package com.hasson;import java.util.concurrent.BrokenBarrierException;import java.util.concurrent.CyclicBarrier;import java.util.concurrent.atomic.AtomicInt原创 2021-01-12 12:10:29 · 1701 阅读 · 1 评论 -
启动线程的正确和错误方式
启动线程的正确和错误方式start和run的比较public class StartAndRunMethod { public static void main(String[] args) { Runnable runnable = () -> { System.out.println(Thread.currentThread().getName()); }; runnable.run(); new原创 2021-01-12 12:09:51 · 884 阅读 · 1 评论 -
实现多线程的方法
实现多线程的方法Oracle文档中说的是两种 继承Thread类 和实现Runnable接口的类,其中实现Runnable更好为什么?解耦的角度来说,实现接口比继承类好利用Runnable后序可以使用线程池,可以减少资源的浪费Java不支持多继承,如果继承Thread类,就无法继承其他类了。两种方法的本质区别实现Runnable类 最终调用了target.run()—> Runnable接口继承Thread类,run()整个都被重写了。同时使用的情况public class原创 2021-01-12 12:09:20 · 807 阅读 · 0 评论 -
未捕获异常
未捕获异常UncaughtExceptionHandler主线程可以轻松发现异常,子线程却不行子线程异常无法用传统方法捕获public class CantCatchDirectly implements Runnable { public static void main(String[] args) { try { new Thread(new CantCatchDirectly(), "Thread-1").start();原创 2021-01-12 12:08:48 · 1153 阅读 · 0 评论 -
线程的各个属性
线程的各个属性什么时候需要设置守护线程?不需要我们如何应用线程优先级来帮助程序运行,有哪些禁忌不应该使用优先级不同操作系统有如何处理优先级问题编号ID:每个线程都有自己的ID ,用于标识不同的线程名称Name:作用让用户或程序员在开发调试或运行的过程中,更容易区分不同线程,定位问题等是否是守护线程isDaemon:true为守护线程,false为用户线程JVM发现所有用户线程都关闭后,会与守护线程一同关闭线程类型默认继承自父线程被JVM启动不影响JV原创 2021-01-12 12:08:14 · 1327 阅读 · 1 评论 -
线程的一生-6个状态
线程的一生-6个状态六个状态分别是NewRunnable调用了start,就是runnable,对应操作系统的 ready,runningBlockedsynchronized所保护,且没有锁。WaitingObject.wait() 无参数Timed waiting有参数Terminated正常、不正常阻塞状态一般习惯而言,把blocked、waiting、timed_waiting 统称为阻塞状态...原创 2021-01-12 12:07:28 · 745 阅读 · 0 评论 -
线程停止、中断
线程停止、中断原理使用interrupt方法,去通知而不是强制public class RightWayStopWithoutSleep implements Runnable { @Override public void run() { int num = 0; while (!Thread.currentThread().isInterrupted() && num < Integer.MAX_VALUE / 2) {原创 2021-01-12 12:07:04 · 935 阅读 · 0 评论 -
java内存模型JMM-底层原理
java内存模型JMM-底层原理文章目录java内存模型JMM-底层原理底层原理java到CPUJVM内存结构 Java内存模型 Java对象模型JVM内存结构Java内存模型java对象模型JMM Java Memory Model重排序三种情况可见性什么是可见性问题为什么会有可见性问题JMM抽象:主内存和本地内存Happens-Before原则volatile关键字保证可见性的措施synchronized可见性原子性什么是原子性Java中的原子操作有哪些long和double 的原子性原子操作+原子原创 2021-01-12 12:05:39 · 888 阅读 · 0 评论 -
Thread和Object类的重要方法
Thread和Object类的重要方法详解方法概览wait、notify、notifyAll当一个线程调用了wait方法,则进入阻塞状态(blocked、waiting、timed_waiting),只有下面四种情况会被唤醒另一个线程调用了这个对象的notify()方法且刚好被唤醒的是本线程另一个线程调用这个对象的notifyAll()方法过了wait(long timeout)规定的超时时间,如果传入0就是永久等待线程自身调用了interrupt方法notify 和notifyAll原创 2021-01-16 10:00:25 · 1665 阅读 · 0 评论