多线程
文章平均质量分 68
线程
丿Mars灬龙族-
安静地做 成功了说
展开
-
线程同步
虽然我们可以理解同步代码块和同步方法的锁对象问题,但是我们并没有直接看到在哪里加上了锁,在哪里释放了锁,为了更清晰的表达如何加锁和释放锁,JDK5以后提供了一个新的锁对象Lock。弊端:当线程很多时,因为每个线程都会去判断同步上的锁,这是很耗费资源的,无形中会降低程序的运行效率。创建三个Thread类的对象,把SellTicket对象作为构造方法的参数,并给出对应的窗口名称。线程死锁是指由于两个或者多个线程互相持有对方所需要的资源,导致这些线程处于等待状态,无法前往执行。同步静态方法的锁对象是什么呢?原创 2023-07-12 10:08:40 · 41 阅读 · 0 评论 -
线程安全问题
出现这个问题的原因是,我们创建的每个线程执行到sleep()语句之后就放弃了cpu的使用权。等到它睡醒之后,它照样还是会往下执行, 不会管其它票的数量已经减少了。从上面的例子可以看到, 有被重复卖出去的票,还有第-1,0张票,出现了线程安全问题。因为线程卖出了重复的票和不存在的票。原创 2023-07-12 10:08:21 · 35 阅读 · 0 评论 -
Thread类常用方法
Thread类常用方法 方法 说明 start() 开启线程,start是通过线程来调用run方法 run() 不是在run方法实现线程的逻辑,而是thread.run(),这个run方法是直接调用了线程中的run yield() 暂停当前线程,并执行其他线程 sleep() 使当前线程由运行状态变成阻塞状态,若睡眠时其他线程调用了interrupt方法,会导致sleep抛出异常InterruptException join() 保证当前线程在其他线程开始时会结束 int原创 2023-07-11 09:05:58 · 29 阅读 · 0 评论 -
多线程的创建
假如计算机只有一个 CPU,那么 CPU 在某一个时刻只能执行一条指令,线程只有得到CPU时间片,也就是使用权,才可以执行指令。所以说多线程程序的执行是有随机性,因为谁抢到CPU的使用权是不一定的。独立性:进程是一个能独立运行的基本单位,同时也是系统分配资源和调度的独立单位。动态性:进程的实质是程序的一次执行过程,进程是动态产生,动态消亡的。run():封装线程执行的代码,直接调用,相当于普通方法的调用。线程:是进程中的单个顺序控制流,是一条执行路径。因为run()是用来封装被线程执行的代码。原创 2023-07-11 09:05:31 · 36 阅读 · 0 评论 -
并发、并行、线程状态
Java中线程的状态分为6种。原创 2023-07-11 08:44:10 · 35 阅读 · 0 评论 -
线程池
当线程被创建并启动以后,它既不是一启动就进入了执行状态,也不是一直处于执行状态。线程对象在不同的时期有不同的状态。那么Java中的线程存在哪几种状态呢?Java中的线程/* 新建 */ NEW , /* 可运行状态 */ RUNNABLE , /* 阻塞状态 */ BLOCKED , /* 无限等待状态 */ WAITING , /* 计时等待 */ TIMED_WAITING , /* 终止 */ TERMINATED;} // 获取当前线程的状态 public State getState() {原创 2023-07-11 08:43:48 · 31 阅读 · 0 评论 -
线程通信
概述生产者消费者模式是一个十分经典的多线程协作的模式,弄懂生产者消费者问题能够让我们对多线程编程的理解更加深刻。所谓生产者消费者问题,实际上主要是包含了两类线程: 一类是生产者线程用于生产数据 一类是消费者线程用于消费数据为了解耦生产者和消费者的关系,通常会采用共享的数据区域,就像是一个仓库生产者生产数据之后直接放置在共享数据区中,并不需要关心消费者的行为消费者只需要从共享数据区中去获取数据,并不需要关心生产者的行为Object类的等待和唤醒方法方法名说明。原创 2023-07-11 08:43:13 · 35 阅读 · 0 评论