1.进程、线程、多线程
- 进程包含多个线程,进程相当于保护伞,将多个线程组合在一起,例如视频,包含着声音、动画等线程。
- 线程:多个线程中有一个主线程(main)
联系:程序运行起来形成进程,进程中又有若干线程,最终执行起来的是线程。
2.线程的创建
A。继承Thread类(重点)

B。实现Runnable接口(重点)


-
两个小结,比较

-
问题:当多个线程操作同一个资源的情况下,线程不安全,数据紊乱。(可以使用并发来实现)

-
例子:龟兔赛跑
package test;
public class Test implements Runnable {
// 胜利者
private static String winner;
@Override
public void run() {
for (int i = 0; i <= 100; i++) {
if (Thread.currentThread().getName().equals("兔子")){
try {
Thread.sleep(10);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
boolean flag = getWinner(i);
if (flag){
break;
}
System.out.println(Thread.currentThread().getName() + "跑了" + i + "步");
}
}
// 判断谁是胜利者
public boolean getWinner(int steps){
if (winner != null){
return true;
}
if (steps >= 100){
winner = Thread.currentThread().getName();
System.out.println("胜利者是" + winner);
return true;
}
return false;
}
public static void main(String[] args) {
Test test = new Test();
new Thread(test,"兔子").start();
new Thread(test,"乌龟").start();
}
}
C。实现Callable接口(了解)
3. 静态代理模式
总结
- 真实对象和代理对象都要实现同一个接口
- 代理对象要代理真实的角色
例子:婚庆公司
新郎只需进行结婚,即实现结婚接口,做新郎该做的事。
婚庆公司代理新郎布置现场,即实现结婚接口,婚前做现场布置,然后新郎结婚,最后进行费用的收取。
以往是直接new一个对象来直接调用新郎的实现类,如今是通过new一个对象,通过婚庆公司的类来进行代理完成任务。
优点:
- 代理对象可以做很多真实对象做不了的事情
- 真实对象只需要专注做自己的事情
4.线程状态
- 创建状态
- 就绪状态:启动线程进入就绪状态、运行状态释放CPU资源进入就绪状态。
- 阻塞状态:阻塞解除进入就绪状态,运行状态等待用户输入线程休眠等操作进入阻塞状态。
- 运行状态:阻塞状态获取CPU资源进入运行状态
- 死亡状态:运行状态线程自然执行完毕,外部干涉终止线程进入死亡状态



A。线程停止

B。线程休眠

C。 线程礼让

D。合并线程

E。线程状态观测

F。线程优先级

H。守护线程

5.线程同步(队列+锁)

- 并发:同一个对象被多个线程同时操作


6.死锁

7。锁

浙公网安备 33010602011771号