thread
伊颦伊笑
人的悲欢并不相通
展开
-
线程——练习
练习 1在 main 方法中启动两个线程第 1 个线程循环随机打印 100 以内的整数直到第 2 个线程从键盘读取了 “ Q ” 命令。package thread_;import java.util.Scanner;/** * @Author: Gin * @Description: * @Modified By: Gin * @Date: Created in 9:02 2021/9/28 */public class Thread12 { public st原创 2021-09-28 10:36:34 · 183 阅读 · 0 评论 -
线程——释放锁
释放锁下列操作会释放锁:当前线程的同步方法、同步代码块执行结束当前线程在同步代码块、同步方法中遇到 break、return当前线程在同步代码块、同步方法中出现了未处理的 Error 或 Exception,导致异常结束当前线程在同步代码块、同步方法中执行了线程对象的 wait() 方法,当前线程暂停,并释放锁。下列操作不会释放锁:线程执行同步代码块或同步方法时,程序调用 Thread.sleep()、 Thread.yield() 方法暂停当前线程的执行,不会释放锁线程执行同步代码块原创 2021-09-27 19:04:50 · 1091 阅读 · 0 评论 -
线程——死锁
基本介绍多个线程都占用了对方的锁资源,但不肯相让,导致了死锁,在编程是一定要避免死锁的发生。例:妈妈:你先完成作业,才让你玩手机小明:你先让我玩手机,我才完成作业模拟线程死锁package thread_;/** * @Author: Gin * @Description: * @Modified By: Gin * @Date: Created in 17:07 2021/9/27 */public class DeadLock_ { public static v原创 2021-09-27 18:58:08 · 67 阅读 · 0 评论 -
线程——互斥锁
基本介绍Java语言中,引入了对象互斥锁的概念,来保证共享数据操作的完整性。每个对象都对应于一个可称为 “ 互斥锁 ” 的标记,这个标记用来保证在任一时刻,只能有一个线程访问该对象。关键字 synchronized 来与对象的互斥锁联系。当某个对象用 synchronized 修饰时,表明该对象在任一时刻只能由一个线程访问同步的局限性:导致程序的执行效率要降低同步方法(非静态的)的锁可以是this,也可以是其他对象(要求是同一个对象)同步方法(静态的)的锁为当前类本身。把 synchron原创 2021-09-27 17:05:43 · 808 阅读 · 0 评论 -
线程——线程同步机制【解决售票问题】
基本介绍在多线程编程,一些敏感数据不允许被多个线程同时访问,此时就使用同步访问技术,保证数据在任何同一时刻,最多有一个线程访问,以保证数据的完整性。也可以这里理解:线程同步,即当有一个线程在对内存进行操作时,其他线程都不可以对这个内存地址进行操作,直到该线程完成操作,其他线程才能对该内存地址进行操作。同步具体方法 synchronized同步代码块:synchronized(对象){ //得到对象的锁,才能操作同步代码 //需要被同步代码;}synchronized 还可以放在原创 2021-09-27 16:04:03 · 200 阅读 · 0 评论 -
线程——线程的生命周期
线程状态转换图package thread_;/** * @Author: Gin * @Description: * @Modified By: Gin * @Date: Created in 12:23 2021/9/27 */public class Thread09 { public static void main(String[] args) throws InterruptedException { Threa threa = new Thre原创 2021-09-27 12:32:42 · 65 阅读 · 0 评论 -
线程——用户线程和守护线程
用户线程和守护线程用户线程:也叫工作线程,当线程的任务执行完或通知方式结束守护线程:一般是为工作线程服务的,当所有的用户线程结束,守护线程自动结束常见的守护线程:垃圾回收机制package thread_;/** * @Author: Gin * @Description: * @Modified By: Gin * @Date: Created in 11:50 2021/9/27 */public class Thread08 { public static vo原创 2021-09-27 12:02:58 · 114 阅读 · 0 评论 -
线程——线程常用方法、终止线程
线程常用方法(1)setName :设置线程名称,使之与参数 name 相同getName:返回该线程的名称start:使该线程开始执行,Java虚拟机底层调用该线程的 start0 方法run:调用线程对象 run 方法;setPriority:更改线程的优先级getPriority:获取线程的优先级sleep:在指定的毫秒数内让当前正在执行的线程休眠(暂停执行)interrupt:中断线程,(提前结束休眠状态)使用细节start:底层会创建新的线程,调用 run,run 就是一原创 2021-09-27 12:02:27 · 184 阅读 · 0 评论 -
线程——售票问题
目录售票问题终止线程线程常用方法(1)interrupt 的使用线程常用方法(2)售票问题共有 100 张票,创建 3 个线程同时售这 100 张票。执行会出现 “ 超卖 ” 情况:即剩余票数为 负 的情况package thread_;/** * @Author: Gin * @Description: * @Modified By: Gin * @Date: Created in 9:16 2021/9/27 */public class Thread04 { pub原创 2021-09-27 12:00:41 · 162 阅读 · 0 评论 -
线程——通过 Thread 类或 Runnable 接口开启线程
Runnable 和 ThreadThread 类实现了 Runnable 接口,run() 方法是 Runnable 接口中的抽象方法线程相关概念单线程:同一个时刻,只允许执行一个线程多线程:同一个时刻,可以执行多个线程,比如:一个qq进程,可以同时打开多个聊天窗口,一个迅雷进程,可以同时下载多个文件并发:同一个时刻,多个任务交替执行,造成一种“貌似同时”的错觉,简单的说,单核 cpu 实现的多任务就是并发。并行:同一个时刻,多个任务同时执行。多核 cpu 可以实现并行。原创 2021-09-25 20:22:11 · 1114 阅读 · 0 评论