多线程
文章平均质量分 93
小白的含金量
三连必回哦
展开
-
多线程进阶篇Step2
若不相等,说明当前线程的值A已经过时了,不是最新的主内存值,此时需要将主内存的最新值V覆盖到A上,保存最新的工作内存,这时值B就不能写回主内存了,需要重新循环重新修改。ABA问题实际上就是当一个线程做了很多事,但是值最终还是没有变化时,把这个值再写会主存,这个时候另一个线程看到的值仍是自己工作内存的值,因此会直接用,但是其实不能直接用的。自旋锁已经说过了,就是获取锁失败的线程不是进入阻塞态,而是一种循环态,会在CPU上空转,不断查询当前锁的状态。我们会发现,线程2的A保存的是0,V!...原创 2022-07-18 01:29:52 · 610 阅读 · 2 评论 -
文件操作IO-Part1
硬件我们可以粗略地分为四大类:处理器(CPU),存储器(内存),输入设备(Input Device), 输出设备(Output Device)其中,CPU只能和内存做直接的数据交换输入设备和输出设备我们统称为I/O输入设备:将现实中的物理信号(光信号,电信号,波信号) ->数字个数,存储在内存中输出设备:数字->物理信号输入输出设备有:鼠标,屏幕,扬声器,摄像头,麦克风,键盘,网卡,硬盘等等。本篇重点说明硬盘这个I/O设备我们可以把计算机的存储结构比作一个金字塔,塔尖的传播速度最快,但是容量较小,反之则越来原创 2022-06-29 15:03:04 · 182 阅读 · 0 评论 -
多线程进阶篇
线程池创建的目的在于:如果我们直接采用像之前的Thread构造方法创建线程,其实在每次创建和销毁线程时都有一定的开支,当线程太多时这个开支还是挺明显的。“池”:目的就是让某些对象被多次重复利用,减少频繁创建和销毁对象带来的开支问题所以说,线程池最大的好处就是可以减少每次启动和销毁线程的损耗(提高时间和空间利用率)线程池内部创建了若干个线程,这些线程都是Runnable的状态,只需要从系统中取出任务(run),就可以立即开始执行。我们将线程池比作一个餐厅:餐厅中的固定员工:线程池中的线程后面招聘的临时员工:当原创 2022-06-27 13:15:59 · 720 阅读 · 1 评论 -
多线程基础部分Part3
wait和notify是Object类的方法,用于线程的等待与唤醒,必须搭配synchronized锁来使用进入此方法的线程会进入阻塞态(WATING),直到有其他线程调用notify方法唤醒此线程b.等待一段时间线程被唤醒就继续执行,否则不再继续等待,继续执行唤醒方法:notifya.普通notify() :随机唤醒一个处在等待状态的线程b.notifyAll() :唤醒所有处在等待状态的线程wait和notify方法的细节对于wait和notify方法,不仅存原创 2022-06-26 23:59:13 · 147 阅读 · 0 评论 -
多线程基础部分Part2
JMM是描述线程的工作内存(概念,并不真实存在,就是一系列CPU的寄存器或高速缓存)和主内存(真实存在的RAM)之间的关系。每个线程都有自己的工作内存,当访问共享变量时(类中的成员变量,常量,静态变量),会先将主内存中的共享变量值拷贝一份放到线程自己的工作内存中,之后对此共享变量的读取操作都是在当前工作内存中进行的。当两个进程同时访问同一共享变量时,会出现各种各样的问题,因为每个线程实际上都是将共享变量加载到自己的工作内存中进行各种操作的,这就导致了,各个线程之间的工作内存可能会出差错,有可能数据在主内存更原创 2022-06-26 16:40:12 · 481 阅读 · 0 评论 -
多线程基础部分Part 1
目录进程和线程进程:程序在系统中的一次执行过程线程:进程中的一个子任务进程和线程的区别描述线程对象的类-Thread类run方法和start方法的区别run方法start方法创建线程:Java中创建一个线程一共有四种方式a.继承Thread类,覆写run方法(现成的核心工作任务方法)a方式下的线程与启动使用匿名内部类创建Tread对象写法b.覆写Runnable接口,覆写run方法b方式下的线程与启动使用匿名内部类实现Runnable接口使用Lambda表达式c.覆写Callable接口,覆写call方法d原创 2022-06-21 11:00:51 · 556 阅读 · 0 评论 -
多线程铺垫:内部类以及Lambda表达式
目录什么是内部类内部类存在的原因内部类的分类成员内部类成员内部类产生对象的两种方式 在成员内部类与外部类之间互相访问属性方法 问题:成员内部类是否可以访问外部类的静态域,能否定义自己的静态域?静态内部类在静态内部类与外部类之间互相访问属性方法 问题:静态内部类是否可以定义自己的成员域/静态域成员内部类和静态内部类的区别方法内部类特点匿名内部类特点 Lambda表达式函数式接口1.无返回值无参数写法2.无返回值有参数写法3.有返回值无参数写法内部类不同于普通类,是把一个类嵌套在另一个类中或者另一个方法中的类别原创 2022-06-19 23:15:54 · 132 阅读 · 0 评论