线程常用操作方法
多线程的主要操作方法都在Thread定义了
线程的命名与取得
多线程的运行状态是不确定的,依靠进程的名字进行操作。所以线程的名字至关重要
构造方法:public Thread
设置名字public final void setName()
取得名字:public final String getName()
对于线程对象的获得是不可能考一个this来获得的,因为线程的状态不可控,但是有一点是明确的,所有的线程对线一定要执行run方法,那么可以考虑获取当前线程
范例:观察现成的命名操作
public class ThreadDemo { public static void main(String args[]) throws Exception { MyThread Mt = new MyThread(); new Thread(Mt, "线程A").start(); new Thread(Mt).start(); new Thread(Mt, "线程B").start(); } }
当开发者为线程设置名字的时候就是用设置的名字,如果没有设置名字,则会自动生成姓名,主要是依靠了static属性完成的
主线程负责处理整体流程,子线程负责处理好事耗时
线程的休眠
暂缓处理:休眠
多个线程休眠:有先有后,不是同时休眠
线程中断
线程的休眠可以被打断,所有正在执行的线程都是可以被中断的,中断线程必须进行异常处理。
线程的强制执行
当满足于某些条件之后,某一个线程对象可以一直独占资源,一直到该线程的程序执行结束。
public class ThreadDemo { public static void main(String args[]) throws Exception { Thread thread = new Thread(() -> { for (int x = 0; x < 100; x++) { System.out.println(Thread.currentThread().getName() + "执行,x="+x); } },"玩耍的线程"); thread.start(); for (int x=0;x<100;x++){ System.out.println("霸道的线程"+x); } } }
在进行线程强制执行的时候一定要获取强制执行线程对象之后才可以调用join()调用
线程的礼让
指的是先将资源让出去让别的线程先执行。线程的礼让可以使用Thread中提供的方法yield(),每一次调用都只会礼让一次
线程优先级
理论上来说 优先级越高越有可能先执行(越有可能先抢占到资源)。
主线程属于中等优先级,默认创建的线程也是中等优先级