三种创建方式
- Thread类**
- Runnable接口**
- Callable接口(现阶段了解 但很重要)
1.Thread类创建线程
将一个类声明为Thread的子类 并重写run方法 调用start开启线程
线程开启不一定立即执行,由cpu调度安排
- 调用run()和strat()的区别
- run() 只有主线程一条执行路径
- start() 多条执行路径,主线程和子线程并行交替执行
Thread练习时的坑
不要用@Test测试 因为Test在执行完start之后就直接结束了不会等你的线程执行完
2.Runnable接口创建
将一个类实现Runnable接口 并重写run方法 通过Thread实例来调用start开启线程
public class Thread1 impl Runnable{
@Override
run(){
...
}
psvm(args){
Thread1 t1 = new Thread1();
new Thread(t1,#{name}).start;
}
}
3.Callable接口创建
线程礼让 yield();
public class TestYield {
public static void main(String[] args) {
Runnable t = new LYCclass();
new Thread(t,"a").start();
new Thread(t,"b").start();
//三种结果 aabb abab abba
}
}
class LYCclass implements Runnable{
@Override
public void run() {
System.out.println(Thread.currentThread().getName()+"\tstart!!!!!!!!!!!");
Thread.yield();//礼让
System.out.println(Thread.currentThread().getName()+"\tend!!!!!!!!!!!!!");
}
}