线程命名和取得
- 创建线程时起名:public Thread(Runnable target,String name)
- 设置线程名称:public final synchronized void setName(String name)
- 取得线程名称:public final String getName();
线程休眠
让线程休息以下,等到了预计时间(毫秒位单位)继续执行
线程休眠会交出CPU,让CPU去执行其他任务,sleep不会释放锁
running->Blocked->Runnable
线程让步
暂停当前线程,并执行其他线程
线程让步不能控制具体交出CPU的时间,不会释放锁,yield只会让拥有相同优先级的线程获取CPU并执行,调用yield会让线程重回就绪状态
Running->Runnable
joinf()方法
即在主线程中调用该方法,就会让主线程休眠,让调用该方法的线程先执行
running->Blocked->Runnable
线程停止
1.设置标记位,可以使线程正常退出
2.使用stop方法强制线程退出,但是该方法不安全已经被废弃
3.使用Thread类中的interrupt()可以中断线程
线程的优先级
1-10
Thread中的几个常量
- 最高优先级:public final static int MAX_PRIORITY = 10;
- 中等优先级:public final static int NORM_PRIORITY = 5;
- 最低优先级:public final static int MIN_PRIORITY = 1;
主线程的优先级是一个中等优先级
线程之间是有继承关系的,比如在A线程中启动线程B,则B线程和A线程拥有相同的优先级
守护线程
守护线程就是一种陪伴线程,简单来说:Java中有两种线程,用户线程、守护线程,通过isDaemono()方法来区别,返回false是用户线程,否则是守护线程,典型的守护线程就是垃圾回收线程,只要当前JVM中有一个非守护线程没有结束,守护线程就得工作,只有当最后一个非守护线程停止工作,守护线程才可以同JVM一同停止工作