throwable是线程接口的的根接口
( 1 )能够说出线程几个状态的名称
1:new 2:runTime 3:Block 4:wait 5: waiting 6:
( 2 )、能够理解线程通信概念
( 3 )、能够理解等待唤醒机制
‘wait 与notify 和Block ’
( 4 )、能够描述Java中线程池运行原理
工厂模式 的 Executor 的 newFixedThreadPool(size int)
------开始的线程 出厂 的 表演—
Runnable{软诶包}================================
线程可以构造什么 -------》
线程 与住线程之间的
线程的
Runnable{软诶包}
线程可以构造什么 -------》
创建线程的方式 有3种
1: implements–》 Runnable :2: extends—》 Thread Thread是Runnable的粗简实现
3:线程池: new submit()
线程案例的渐进 学习的步骤
Demo01:Thread 的实现思路:extends Thread 并重写了 run方法 里 准备 线程进程的次数
Thread 的常用方法 可用到
run 里 获取线程的 名称
getName()
currentThread()获取当前执行的对象
可以
可以通过继承类重写父类 Thread 的4构造方法 来传参字符串 获取
在测试类里 在主main线程里 new 出线程子类的实例对象 通过 Thread 的start()方法通知JVM 开
启线程 注意最先执行的还是 main 主函数的开启 然后这两个 线程 开始抢占 执行了
主要是Runnable的
Runnable 创建线程的方式
1:创建Runnable接口的实践类 就重写 run方法
run方法里是: 线程的 目标
2:在main 方法里 new 出实践类的实例 以做为 Thread实例 构造方法的参数
3:调用start()开启线程
======Thread 构造方法=====》
1:空参 :2:获取名称 的String name :3:获取指定目标的线程 名称 Runnable target ,String
name (这是Runnable 创建线程的要用Thread的重载的是第3个这个构造方法)
+++ ????线程的构造可以有Thread 作为传参吗 +++
这些常用方法的总结 =======》
刚开始的这 3个 run getName start sleep(long millis) currentThread(当前执行对象的
引用)
----》线程里Thread 与Runnable的区别
Thread本身 可以直接的调用start 来开启 线程的 不写run方法 线程没有实际的作用
实现Runnable 的就可以 公用run方法: 通过同一个实践类 构造 不同的对象
Thread的构造是的参数都是 传参的是同一个Runnable 对象
用的也是 Runnable的run方法。
形成了共享资源: 自定义实践类 :线程任务的编写 传入Thread构造方法 :负责启动线程
避免单继承的局限
代码与线程是独立的
线程池里只能放 Runnable对象与Call的
----》使用匿名内部类 当然是接口来实现 问: Thread构造函数里 通过匿名内部类的每次new对象的
run方法也是共享同一个资源吗?
线程安全的=====
买票 情景的描述
- 线程的是在共享run方法执行 的信息 错乱:线程的不安全==》不同步的问题
- 同步锁的解决方法:锁 的机制 ,让共享 有了每个线程分别的使用资源
- 线程安全 就是 进行锁的判断 有3 种 同步的
- 同步代码块:对资源的互斥访问 关键字:synchronized
-
同步方法
- 锁 对象: 就是 所有对象 多个线程共享同一把 锁
while 的循环方式 while为 true的时候就要有break 的跳转的语句
![](/qrcode.jpg)
-
锁 对象: 就是 所有对象 多个线程共享同一把 锁
-
同步代码块:对资源的互斥访问 关键字:synchronized(){ }
-
synchronized 的 参数就是:锁 锁是任意Object对象 this 当前对象 可以不?
-
3个对象都用了Ticker对象 我们在Ticker 里创建对象 这个对象也是 一次 就标识了这个锁 的 概念
-
同步方法 :
不是静态方法的 锁 是 this -
静态方法的 锁是 方法锁在的类的字节码文件对象 类名.class 反射的概念
-
!!!!!!最常用的 是 同步代码块
============= Java面对象 思想 的==》Lock 接口 ===========
Lock 比synchronized 更广泛的 锁定操作
- 定义2个方法==》 1: lock()加锁 2:unlock*()释放锁
- 直接 多态方式 使用 Lock接口的===》 实现类:ReentrantLock
- '将代码块 包括在起始: lock()加锁 与 unlock*()释放锁的 域中
*rojavt