常用方法:
1.start():启动当前线程,调用当前线程的run,一般一些set方法(例如setName,setPriority要在start前设置)
2.run():该方法其实也是thread implements 了 runnable接口的,并且重写的时候,先判断if(target!=null){target.run()}其中target是thread里的一个runnable类型的属性。也就是,如果target有实例,就用target的run函数
3.currentThread():静态方法,返回执行当前代码的线程
4.getName():获取当前线程的名字
5.setName(string):设置当前线程的名字
6.yield():静态方法,释放当前cpu的执行权(但是有可能刚释放,cpu又分给你了)
7.sleep(long millitime):静态方法,让当前线程睡眠指定的毫秒数。在该指定时间内是阻塞状态,cpu不会分配给该线程,当过了这个时间,也不一定立刻就分给它,也是看cpu喜欢。
8.join():在a线程中调用b线程的join,会阻塞a线程,等b线程执行完以后,才结束a的阻塞状态
9.isAlive():判断当前线程是否存活(一般run里面代码跑完就死了)
10.stop():过时了,不推荐用,强制执行当前线程
构造器:
1.Thread():空参构造器
2.Thread(string): 传进一个string相当于setname了,给该线程设置名字
3.Thread(runnable):传进实现了runnable接口的子类,并且赋给了thread的target属性。
4.Thread(Runnable target, String name)
设置线程优先级:
thread有三个静态常量:
MAX_PRIORITY=10;MIN_PRIORITY=1;NORM_PRIORITY=5;
线程的优先级有1-10个等级,所有线程默认是5,。
getPriority()可以获取当前线程优先级,setPriority(int)可以设置当前线程优先级
高优先只是有大概率能抢占cpu的执行权,但不是一定的,所以并不是高优先级一定比低优先级先执行。
线程分类:
分为守护线程和用户线程,守护线程是服务用户线程的,它随用户线程的消亡二消亡。例如main是用户线程,gc是守护线程。
使用thread.setDaemon(true)可以设置当前线程为守护线程(同样在start前设置)
线程的生命周期(线程的几种状态):

以上状态都都定义在thread类的内部类state里:
新建就是new一个Thread的时候
就绪是start之后的状态,但是还没有运行,因为cpu还没给他分配使用权,但是已经准备好了接受使用权。
运行是得到了使用权
阻塞是cpu想给他使用权都不可以给
死亡就是死了
其中suspend方法过时了,因为会导致死锁,resume因为和它配套使用也过时了。