![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java进阶 EE
文章平均质量分 76
Roger_1900
这个作者很懒,什么都没留下…
展开
-
JAVA进阶 THREAD学习12 多线程小结
首先有前面的分析得出多线程的安全问题是由的混乱导致的。原创 2024-05-14 20:44:42 · 195 阅读 · 0 评论 -
JAVA进阶 THREAD学习11 多线程案例04 线程池
线程池可以看成是一个公司的额定员工。当有任务时,如果当前员工数量没有达到额定员工数,公司就会另外雇一个实习生去完成任务;如果当前员工数达到额定员工数,公司就会在接下来的计划里面安排上这个任务,等公司里的员工空闲了再让他们做。原创 2024-05-13 22:45:21 · 344 阅读 · 0 评论 -
JAVA进阶 THREAD学习10 多线程案例--计时器
两量两类MyTimeTaskWorker两方法MyTimer()schedule()原创 2024-05-12 23:45:28 · 216 阅读 · 0 评论 -
JAVA进阶 THREAD学习09 多线程案例--阻塞队列
阻塞队列会让需要操作的数据处在一个较为稳定的范围内(队列的长度范围内),控制数据的操作速率,解决了问题1和2.而且阻塞队列会将所需要操作的数据进行排序,保证了访问次序,解决了问题3.包饺子的人不需要知道是谁擀的皮,也不需要知道擀皮的人是用擀面杖擀、用罐头擀或者是直接去超市买的,他只需要把盘子里的皮过来包就行了。擀皮的人不需要知道下一个是谁用他擀的皮去包饺子,也不需要知道包的饺子是什么样子的,他只需要擀好了就往盘子上放就好了。就好比大家一起包饺子,一拨人擀皮,一拨人包。4个基本内容:存、移、变、释。原创 2024-05-11 21:42:31 · 801 阅读 · 1 评论 -
JAVA进阶 THREAD学习09 多线程案例--单例模式
私有的声明实现了类的单一声明,只能在类的内部声明这个类,在类的外部不能声明。私有构造实现了类的单一实例化(new),只能在本类里面实例化,避免外部的实例化。这是单例类的唯一外部访问方法,只有这个方法才能获取该类的信息。原创 2024-05-11 12:21:38 · 320 阅读 · 1 评论 -
JAVA进阶 THREAD学习08 wait()和notify()方法
个人感觉wait()和notify()方法的关系可以用“解铃还须系铃人”这句话来概括。当一个线程对一个对象使用方法,即这个线程在等待这个对象,可以看成;当这个对象使用了方法后,可以看成,被这个对象“系铃”的线程就被唤醒了。当然线程的,notify不能确定唤醒的线程,可以看成“系的铃”太多了,盲解一个应付。那么如果需要这个对象“系铃”的所有线程就可以使用notifyAll(),后,线程的运行不是按照顺序,而是需要的。原创 2024-05-11 01:06:54 · 633 阅读 · 1 评论 -
JAVA进阶 THREAD学习07 volatile关键字
在输入的数值不是0时也不会结束循环,我们来解析一下这个过程。这里存在两个线程,但由于线程t1和线程t2不在同步状态,所以当t2还没获取输入的数时,t1就已经判断结束了。接下来我们验证一下这个猜想。将线程开始和结束进行打印来监视线程的运行顺序,将counter.flag进行打印监视它的值。这里主线程就直接运行,将counter.flag的值给打印出来了,然后两个线程才会运行。原创 2024-05-10 21:47:05 · 284 阅读 · 0 评论 -
JAVA进阶 Thread学习06 synchronized关键字
在前面的文章中被称为,其实它的名称还不只这个,它也叫.但是这里为了方便理解就把它。原创 2024-05-08 00:26:30 · 645 阅读 · 1 评论 -
JAVA进阶 Thread学习05 线程风险
这里是我们正常情况下对线程使用的理想结果,即两个线程都把count计算满。那么如果不让t1使用join()去等待,结果会怎么样呢?可以看到每次得出的结果都是不一样的。而只让其中一个等待join()结果也是一样不固定的。更有意思的是当两个线程都不等待join()的时候其结果是固定的0这里不符合预期的结果都表明这个线程是不安全的。也就是说,的情况下,通常在单线程情况下,我们称这个线程是的。这里多一嘴,讲讲。原创 2024-05-06 17:03:56 · 787 阅读 · 2 评论 -
JAVA进阶 Thread学习04 线程的状态
可以看到当线程刚刚被实例化的时候(也就是被new出来的时候),这个时候的状态就是NEW了。使用yield之前kunkun和tiantianquan是一半一半的执行运行,在使用yield之后kunkun的运行明显比tiantianquan少了很多。这里的synchronized关键字是作为同步锁使用的,作用是将线程按顺序同步起来,使之处于同一个时间排序的运行状态(个人是这样理解的)。当一个线程使用yield()方法的时候,如果出现和其他线程冲突的情况会放弃自身的cpu使用,到后面去排队。原创 2024-05-05 16:11:34 · 337 阅读 · 3 评论 -
JAVA进阶 Thread学习03 线程的属性以及常见方法
volatile关键字修饰的Boolean可以在Runnable和main沟通Thread类内部自带返回类型是boolean的变量作为是否被interrupt的标记方法名方法介绍中断的执行方法,用来中断对象相关联的线程,线程如果堵塞则通过异常通知,否则设定标记位判断是否设置中断标记位,调用销毁标记位判断是否设置中断标记位,调用不销毁标记位while(!System.out.println(Thread.currentThread().getName() + "正在转钱");try{原创 2024-05-04 23:28:00 · 805 阅读 · 1 评论 -
JAVA进阶 Thread学习02 创建线程
细心的小伙伴会发现为什么第一个方法是在Thread()后直接接上花括号创建内部类,而第二个方法是在Thread后的()内new了一个Runnable()之后再接上花括号.这是为什么呢?获取当前线程对象的时候,方法一可以直接使用this来获取也可以使用Thread.currentThread来获取,方法二只能用Thread.currentThread来获取.因为内部类创建对象是直接new一个类后直接接{}然后再花括号{}内写需要的方法.就像第一个方法一样,这个是常规的内部类构造.(参数) -> {方法体}原创 2024-05-02 22:08:35 · 267 阅读 · 1 评论 -
JAVA进阶 Thread学习01
怎么来理解呢?可以把一个个进程看成一个一个小房间,而线程就是房间里面划分出来的座位,每一个进程都最少有一个线程。进程就把总的内存空间分配成房间一样的小块的内存空间,而线程就可以在这样的空间里面运行。原创 2024-05-02 20:46:48 · 312 阅读 · 3 评论