1.线程的命名与取得
- 创建线程的时候设置名称:
public Thread (Runnable target,String name)
- 设置线程名称:
public final synchronized void setName(String name)
- 取得线程的名字:
public final String getName()
- 取得当前正在执行的线程对象
public final String getName();
2.线程休眠(sleep方法)
public static native void sleep(long millis) throws InterruptedException
线程休眠指的是让线程暂缓执行一下,等到了预计时间之后再恢复执行。
线程休眠会交出CPU ,让CPU 去执行其他的任务。
但是,sleep方法不会释放锁,当前线程持有对某个对象的锁,即使调用sleep方法,其他线程也无法访问这个对象。
线程休眠的时间以毫秒为单位。
3.线程让步
暂停当前正在执行的线程对象,并执行其他线程。
调用yield方法会让当前线程交出CPU 权限,让CPU去执行其他的线程。跟sleep方法类似,同样不会释放锁。但是yield不能控制具体交出CPU 的时间,另外,yield方法只能让拥有相同优先级的线程有获取CPU 执行时间的机会。
4.join方法
等待该线程终止。也就是说如果在主线程中调用该方法时就会让主线程休眠,让调用该方法的线程run()方法先执行完毕后再开始执行主线程。
5.线程停止
多线程中有三种方式可以停止多线程
- 设置标记位,可以使线程正常退出
- 使用stop方法强制使线程退出,但是该方法不太安全已经被废弃了。
- 使用Thread类中的一个interrupt()可以中断线程。
6.线程的优先级
线程的优先级是指,优先级越高越有可能先执行而已,仅仅是有可能而已
设置优先级:public final int setPriority(int newPriority)
取得优先级:public fianl int getPriority()
常用优先级:
Thread.MAX_PRIORITY = 10;
Thread.NORM_PRIORITY = 5;
Thread.MIN_PRIORITY = 1;
线程的继承性:
优先级可以继承在A 线程中启动B 线程,则A和B 的优先级一样