https://www.bilibili.com/video/BV1V4411p7EF?p=2
进程/ 线程/多线程
普通调用和多线程
第一是继承Thread
第二是实现runable接口
这是一个有疑问的代码
package com.tedu.spring5;
import java.text.BreakIterator;
import static java.lang.Thread.*;
public class Race implements Runnable{
private static String winner;
public static void main(String[] args) {
/*
1兔子和乌龟一起进行比赛 一起从起跑线出发,谁先到达终点,谁就赢了
*/
Race race=new Race();
new Thread(race,"兔子").start();
new Thread(race,"乌龟").start();
}
@Override
public void run() {
for (int i=0;i<=10;i++){
boolean flag = gameOver(i);
if (flag){
break;
}
String name = currentThread().getName();
System.out.println(name+"跑了"+i+"步");
}
}
public boolean gameOver(int step){
// if (step==10){
// winner= currentThread().getName();
// System.out.println("谁赢了"+winner);
// return true;
// }
if (winner!=null){
return true;
}
if (step==10){
winner = currentThread().getName();
System.out.println("胜利者"+winner);
return true;
}
return false;
}
}
观察线程的状态
多线程详解
死锁
两个线程相互抱着对方需要的资源,然后形成僵持
Lock锁
synchronized和lock比较