多线程
1.线程相关
进程:一个项目就是一个进程
线程:
2.线程的生命周期<5>
产生–>就绪 —>运行 —>消亡
阻塞
3.创建线程的两种方式
系统会给我们提供一个线程叫做main线程
我们调用main方法,就是开启main线程
我们以前学的都是单线程
每一个线程都会单独开辟一个方法栈
1.创建一个类继承Thread
2.重写run方法
run和start的区别
1.创建一个类实现Runnable接口
2.重写run方法
Q:哪个更好?
第2种: 单继承 多实现
优点:空出了一个继承位
4.Thread类的常用方法
1.start():开启线程 并开辟一个新的方法栈
2.run():线程要做的事情 run方法不能抛出异常 只能捕获
3.getName(): 获得线程名字
4.setName():
5.currentThread():<静态方法>获得当前线程
6.setPriority(): 设置线程优先级
优先级分为1-10级
最低级:Thread.MIN_PRIORITY = 1
默认级:Thread.NORM_PRIORITY = 5
最高级:Thread.MAX_PRIORITY = 10
这个优先级不是指执行的顺序优先级
而是指每个线程抢到资源的概率大小
7.setDaemon():守护线程
守护线程是一种特殊的线程 一般他会一直执行
直到当前程序中所有的非守护线程都执行完毕
它才会跟着JVM一起结束
不能将运行中的线程设置为守护线程
java中一个典型的守护线程
GC:垃圾回收机制