多线程
文章平均质量分 55
线程安全,线程的可见性、原子性、有序性
MrDJun
热爱学习,传递知识。
展开
-
Java并发 - Callable
多线程的第三种创建方式,可抛异常、可带返回值。实现 Callable<T> 接口创建线程示例:public class ThreadCallable { public static void main(String[] args) throws ExecutionException, InterruptedException { FutureTask<String> futureTask = new FutureTask<>(new MyThr原创 2021-08-22 12:49:08 · 144 阅读 · 0 评论 -
Java并发 - 线程封闭
多线程中访问共享可变数据时,涉及到线程间数据同步的问题。并不是所有时候都需要用到共享数据,所以线程封闭概念就出来了。数据都被封闭在各自的线程之中,就不需要同步,这种通过将数据封闭在线程中而避免使用同步的技术称为线程封闭。线程封闭的具体体现方式:ThreadLocal、局部变量(栈封闭)。ThreadLocal 封闭ThreadLocal是一个线程级别的变量,每个线程都有一个私有的独立的栈空间,而ThreadLocal就存储在这个空间。所以在高并发的情况下,彻底消除了竞争条件,ThreadLocal原创 2021-08-21 16:54:31 · 116 阅读 · 0 评论 -
Java并发 - 线程的生命周期
线程的生命周期1、 补充Java中的线程分为两类:守护线程、用户线程(默认)。它们几乎在每个方面都是相同的,唯一的区别是判断JVM何时离开。意思就是,只要当前JVM实例中尚存任何一个非守护线程没有结束,守护线程就全部工作守护线程是用来服务用户线程的,通过在start() 方法前调用Thread.setDaemon(true) 可以把一个用户线程变成一个守护线程。2、 JDK中用Thread.State枚举表示线程的六种状态在枚举类 Thread.State 中共有六种状态代码验证publ原创 2021-08-21 16:54:00 · 66 阅读 · 0 评论 -
线程 - 常用方法、线程优先级
一、 进入正题之前,先看“三连”什么是程序(Progress)?使用某编程语言编写的,为了完成特定任务的静态的代码。什么是进程(Program)?程序的一次执行过程,或者正在运行的一个程序(比如说正在运行的微信和网易云音乐)。动态过程:有它自身的产生、存在、消亡的过程。什么是线程(Thread)?说白了,进程可以细分线程,所以进程一般是由很多线程组成的,是程序内部的一条执行路径。多线程就是在同一时间执行多个线程(同一个程序里面需要同时执行多个任务,比如说360可以同时体验和清理垃圾)。二、 线原创 2021-08-21 16:44:45 · 232 阅读 · 0 评论 -
Java多线程废弃的suspend和resume暂停与继续
线程 - 暂停与继续(废弃的suspend+resume)----------------- 目录直通车 ----------------线程 - 暂停与继续(废弃的suspend+resume)一、基本应用二、缺点——独占三、缺点——数据不完整方法名用途suspend线程暂停resume恢复线程执行一、基本应用一个案例看懂 suspend() 与 resume() 的基本应用:public class ThreadSuspendAndResume { p原创 2021-02-15 18:25:58 · 215 阅读 · 0 评论 -
Java 线程详解(一)常用方法、线程优先级
目录直通车一、 进入正题之前,先看“三连”二、 线程例子三、 多线程的创建与使用四、 Thread方法总结1、 start()2、 run()3、 currentThread()4、 getName()5、 setName()6、 yield()7、 Join()8、 isAlive()9、 Sleep(long x)五、 线程的优先级六...原创 2019-02-26 15:58:47 · 801 阅读 · 0 评论 -
Java 线程详解(二)多线程创建、生命周期、线程同步、线程通信
目录直通车一、 多线程的创建与使用1、 继承于Thread类2、 通过Runnable实现窗口售票的例子通过Runnable实现窗口售票二、线程的生命周期1、 补充2、 JDK中用Thread.State枚举表示线程的五种状态(1) 新建(2) 就绪(3) 运行(4) 阻塞(5) 死亡执行流程图解决窗口售票的问题三、 线程的同步...原创 2019-02-28 22:10:27 · 261 阅读 · 0 评论 -
Java线程同步方法与代码块
目录直通车一、同步代码块二、 同步方法一、同步代码块sysnchronized(同步监视器){ // 需要被同步的代码块(即为共享数据的代码)}1) 共享数据:多个线程共同操作的同一个数据(变量)2) 同步监视器:有一个类的对象来充当。哪个线程获取此监视器,谁就去执行大括号里被同步的代码。俗称:锁。要求所有的线程共用同一把锁。下面提供一个用同步代码块的方式...原创 2019-03-09 17:15:49 · 583 阅读 · 0 评论 -
Java之线程死锁
死锁在类中只是有可能发生,并不是每次都发生,但是死锁是一个非常严重的一个问题,必须引起重视!一、 什么是死锁?概念不同的线程分别占用对方的同步资源不放弃,都在等待对方放弃自己需要的同步资源不放弃,都在等待对方放弃自己需要的同步资源,就形成了线程的死锁。补充在数据库系统的设计中考虑了监测死锁以及从死锁中恢复,数据库如果监测到了一组事务发生了死锁时,将选择一个牺牲者并放弃这个事务...原创 2019-03-14 11:56:44 · 540 阅读 · 0 评论 -
Java 之线程的通信
一、 实例在进入正题之前,先来看一个例子:目前不使用线程的通信来完成下面这个功能: 银行有一个账户,有两个储户分别向同一个账户存3000元,每次存1000,存三次。每次存完打印账户余额。这个例子也会存在,我在之前的博文里面写到的线程安全的问题,通过线程的同步方法即可解决。class Account{ public Account(){ } d...原创 2019-03-15 17:56:24 · 183 阅读 · 0 评论 -
如何在Java中优雅的停止线程
-----------------目录直通车------------------一、 废弃的停止方法二、interrupt() 初体验三、判断线程是否为停止状态四、 能停止的线程——异常法五、在 sleep 状态下停止线程一、 废弃的停止方法 很多朋友一看到这个标题就能想到:Thread.stop()。Java中的多线程可不像break语句那么干脆。 从一定意义上来讲 stop、suspend、resume 这三个过期作废的方法确实能够强行终止线程,但是是不推荐使用的,因为有可能会发生不可预料原创 2020-10-26 15:34:43 · 518 阅读 · 0 评论