1. 线程的五种状态
- 运行:cpu正在执行(正在执行)
- 阻塞:具备运行资格,但没有执行权(排队等待执行)
- 睡眠:sleep(time); 时间到了才会醒(时间到进入排队等待队列)
- 等待(等待/冻结/中断):wait(); notify();了才会醒(notify() 后进入排队等待队列)
- 消亡: 线程被销毁
2. 线程的方法
- 线程的名字
- thread_a.getName();
- new Thread(name);
- 获取当前线程对象
- thread_a.currentThread();
- 强制让线程恢复到运行状态
- thread_a.interrupt();
- 设置守护线程
- thread_a.setDaemon(boolean on);
- 当
thread_a
被设置成守护线程时,当主线程结束后,thread_a
会自动结束
- 抢夺cpu执行权
- thread_a.join();
-
thread_a
抢夺cpu执行权,只有当thread_a
执行完后才会让出cpu执行权给其他线程
- 让出cpu执行权
- Thread.yield();
- Thread的静态方法
- 暂停当前正在执行的线程,并执行其他线程
- 打印该线程信息
- thread_a.toString();
- 打印的线程信息包含:线程名称、线程优先级,线程所属的线程组
- 线程组:在
thread_a
中开启thread_b
,那么thread_b
所属的线程组就是thread_a
- 线程优先级:线程的默认优先级是5
- 设置线程优先级
- thread_a.setPriority(int newPriority);
- newPriority取值范围是1~10,默认是5,10优先级最高,1优先级最低
- Thread.MAX_PRIORITY = 10
- Thread.MIN_PRIORITY = 1
- Thread.NORM_PRIORITY = 5
3. 如何停止线程
- 方式一:标记位方式结束线程
线程通常是循环结构,只要通过标记位控制循环,就可以让run方法结束,也就是线程停止
- 方式二:interrupt()方法强制让线程恢复到运行状态
但是如果线程处于等待状态 lock.wait()
,那么记位停止线程的方式就会失效
Thread.interrupt();
让冻结状态的线程强制恢复到运行状态
- 方式三:设置成守护线程
Thread.setDaemon(true);
设置成守护线程
守护线程和一般的后台区别:当主线程结束后,守护线程会自动结束
网友评论