线程

1.线程的概念 1.计算机任务管理器 2.进程线程-软件-代码块 3.CPU处理任务的最小单位 4.多线程软件为什么下载比较快 2.线程的作用 1.包装一个独立的功能 3.第一种线程的实现方式extends Thread 继承thread类中的run方法和start方法,覆写其中的代码。详细参考01和02代码 4.经典售票案例 多线程实现共享一个字段【票池】,详细参考代码 5.第二种线程的实现方式implements Runnable 1.作用:将需做的某个功能封装成一个线程体,该线程可以独立的获得CPU分配的资源 从而实现多功能同时运行。详细参考代码 2.继承Thread 和实现Runnable的区别 1、继承有局限,Java中类只能够单继承 2、实现的方式,我们的类在业务上可以继承它本应该有的类,同时可以实现接口变成一个线程类 3、关于数据共享的问题:就看所谓被共享的数据所在的类的对象被创建了几个 3.通过实现Runable实现线程的,自定义类,的对象 6.Thread类的特点 1.线程休眠Sleep 2.线程的优先级 3.守护线程 4.等待线程终止join 5.线程礼让 7.同步线程 1.线程取名字 1.继承方式 2.实现方式 2.同步代码块 语法结构:synchronized (同步监听对象) { 可能引发线程安全问题的代码 } 1.同步语法块 2.同步监听对象的理解认识 特点: 1.{必须保证多个线程访问的是同一个同步监听对象 2.同步监听对象,可以是任意的对象【必须保证1】 3.this也是可以作为同步监听对象的【必须保证1】 4.一般最常用的:当前类的字节码对象,作为同步监听对象 TicketThread.class:一个类对应的字节码对象只有一个 3.测试核心业务代码块 3.同步方法 同步方法:不需要同步代码块了:参考03代码 同步方法的效果:一旦方法被同步,一个线程访问未结束,另外一个线程不能访问 1.同步方法怎么做:用一个修饰符即可synchronized:例如:内衣外穿外衣内穿 同步方法也是存在同步监听对象的:意味着线程还是必须保证访问的是同一个对象 1.一个方法static修饰:默认同步监听对象是TicketThread.class当前类的字节码对象 2.没有static修饰:this 2.注意:不能为了同步而加static,根据实际的业务做分析 8.线程通信等待与唤醒 3.线程的生命周期 1、线程的声明周期分几个阶段: ① 创建 ; 例如 Thread t = new Thread(); ② 就绪 ; 调用了start方法 t.start() ---> 告诉CPU我准备好了 ③ 运行 ; 获得CPU的资源,开始执行线程体中的代码 ④ 死亡 ; 有多种情况导致死亡, 1)例如线程体执行完毕; 2)非自然死亡; 3)对象失去引用 4)对象被垃圾回收机制销毁 2、注意点: ① 休眠等操作可能导致正在运行的线程阻塞],阻塞完了(sleep完了)进入的是就绪状态 相互一一直等待,出现死锁! ② 一个线程死了就死了,不能够死而复生

转载于:https://my.oschina.net/u/4085187/blog/3029778

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值