
JAVA基础多线程
主要是JAVA语法基础阶段使用的多线程案例的讲解
508小怪兽
这个作者很懒,什么都没留下…
展开
-
线程数据安全05-----(同步代码块) 生产者和消费者案例 ,生产牛奶消费牛奶
文章目录实现目标测试类生产者消费者实现目标这里我们实现一个生产者消费者的问题实现生产者吧牛奶放到 牛奶盒子里面 消费者从牛奶盒子里面拿牛奶喝创建四个类1.创建牛奶盒子类 实现放牛奶和得到牛奶的方法2.创建消费者 构造方法的参数是牛奶盒子 继承自Runnable 调用放牛奶3.创建生产者 构造方法的参数是牛奶盒子 继承自Runnable 调用得到牛奶4.创建测试类 创建 生产者和消费者 两个线程测试类public class milkTest {public st原创 2021-11-28 23:06:08 · 409 阅读 · 0 评论 -
线程数据安全04-----使用Lock锁
这里我们讲解使用Lock来给线程加锁 就像我们之前使用synchronized方法来加锁一样Lock是一个接口 我们要使用多态的方式 使用接口的实现类对象ReentrentLock 来创建对向 ReentrentLock 构造方法 ReentrentLock(); 成员方法 lock() ; 添加锁 unLock() ; 释放锁线程代码public class SaleTackets implements Runnable{priva原创 2021-10-18 23:22:49 · 113 阅读 · 0 评论 -
线程数据安全03-----(同步方法)解决对个窗口卖出同一张票的问题
说白了就是上一节我们学到的同步代码块,实际上就是对一部分的代码块上锁,这里我们学习同步方法就是给一个方法上锁代码实现了三中同步的方式来保证数据安全注意事项:无论是哪一种方式 我们都要保证线程使用的是通一把锁同步方法的时候并没有明确的指出锁的参数是什么 ,我们设置了一个 除以2 的i循环来了解同步方法的锁是什么类型的public class SaleTickets implements Runnable{/*同步里面的锁我们要注意的就是 、不同地方的锁要是同一把锁*/priv原创 2021-10-18 23:21:37 · 167 阅读 · 0 评论 -
线程数据安全02-----(同步代码块)解决对个窗口卖出同一张票的
问题分析:出现了数据安全问题 , 主要原因就是同一时间有多个线程操作了共享的数据我们这个程序一开始会出现多个窗口卖出了同一张票这种情况就是出现了数据安全的问题出现数据安全的问题的原因1.是否有多线程环境2.是否有共享数据 这里的共享数据就是 tickets3.是否有多条语句操作共享数据 这里就是对数据的输出 和++ 操作解方法就是给程序加锁,在某一段时间只能有一个程序操作共享数据破坏第三个条件具体代码的分析:private int tickets = 1;public void原创 2021-10-18 23:18:57 · 155 阅读 · 0 评论 -
线程控制的三个方法:等待 , 死亡 , 标记为守护线程
文章目录线程控制的三个方法1线程等待2.等待到线程死亡3.把线程设置为守护线程我们讲解线程控制的三个方法static void sleep(long millionTime) 暂停线程的运行 单位为毫秒void join() ; 等待这个线程死亡void setDeamon(boolean on) 将此线程标记为守护线程,当所有线程都是死亡线程的时候 JVM退出1线程等待public class demo01 {/*我们讲解线程控制的三个方法static voi原创 2021-10-18 23:16:53 · 236 阅读 · 0 评论 -
创建线程的两种方法继承Thread或者实现Runnable
方法一:(1)定义一个类Mythead类继承自Thread(2)在Mythread类里面重写Thread的run方法(3)在测试类里面创建Mythrea类的对象(4)使用Mythread的对象调用start方法开启线程代码展示Mythread类public class Mythread extends Thread{public Mythread() {}//有了带参构造以后系统的默认无参构造就没有了我们要手动给出public Mythread(String name) {su原创 2021-10-18 23:13:56 · 371 阅读 · 0 评论 -
线程数据安全01-----java多线程出现场的一些现象,以及解决方法(实现线程安全 同步代码块)
我让三个线程充当三个售票窗口售卖100张票,但是会出现三个线程卖出同一张票的现象会发现窗口一和窗口二都卖出了同一张票,这是为什么?原因就是java多线程执行的随机性代码讲解卖票的类public class SaleTickets implements Runnable{/*实现一个买票的操作成员变量 private int tickets = 100买票这个动作要一直存在就算没有票了也会有人来问 死循环*/private int tickets = 1;/*@Ove原创 2021-10-18 23:11:46 · 156 阅读 · 0 评论 -
java多线程03----线程的生命周期
原创 2021-10-18 23:09:11 · 105 阅读 · 0 评论 -
java多线程编程02设置线程的优先级,讲解线程调度方式
1.线程的调度方式(1)时间片轮转方式: 平均 公平(2)抢占式调度:根据优先级不同,优先级高的线程获得时间片的机会大一点优先级相同时会随机选取一个线程执行JAVA使用抢占式调度方式:计算机只有一个CPU,CPU在某一时刻只能执行一条指令,线程只有的到时间片才能有使用权,所以JAVA多线程的执行具有随机性2.设置和获取优先级的方法Thread类的成员方法,方然我们创建的Thread的子类可以使用这些方法public final int getPriority() ; 获得优先级p原创 2021-10-18 23:05:46 · 313 阅读 · 0 评论 -
JAVA多线程01获得和设置线程名
这里讲解一次下JAVA多线程的基本知识1.线程和进程(1) 进程进程是系统进行资源分配和调用的独立单位每一个进程都有他自己的内存空间和系统资源(2) 线程线程是进程里面单个的顺序控制流是一条直行路径单线程: 一个进程如果只有一条执行路径,则成为单线程程序多线程:一个进程如果有多条执行路径则称为多线程2.进程的实现方式方式一:(1)定义一个类Mythead类继承自Thread(2)在Mythread类里面重写Thread的run方法(3)在测试类里面创建Mythrea类的对象(4)原创 2021-10-18 23:05:05 · 170 阅读 · 0 评论