Java线程的常用方法
- start
线程调用该方法将启动线程,使之从新建状态进入就绪队列排队,一旦轮到它来享用cPU资源时,就可以脱离创建它的线程独立开始自己的生命周期了。需要特别注意的是,线程调用sat0方法之后,就不必再让线程调用stut0)方法,否则将导致 legafThreadsensEcepica异,即只有处子新建状态的线程才可以调用stat()方法,调用之后就开处书以等待CPU资源了,如果再让线程调用startQ方法显然是多余的。
2.run()
Tnread 类的um0方法与Runable接口中的run0方法的功能和作用相同,都用来定义线程对象被调度之后所执行的操作,都是系统自动调用而用户程序不得引用的方法。系统的Thread 类中,run(方法没有具体内容,所以用户程序需要创建自己的Thread类的子类,并重写nun0方法来覆盖原来的runO方法。当run方法执行完毕,线程就变成死亡状态,所谓死亡状态就是线程释放了实体,即释放分配给线程对象的内存。在线程没有结束run(方法之前,不赞成让线程再调用star(方法,否则将发生lllegalThreadStateException异常
3.sleep
(int millsecond)线程的调度执行是按照其优先级的高低顺序进行的,当高级别的线程未死亡时,低级别线程没有机会获得CPU资源。有时,优先级高的线程需要优先级低的线程做一些工作来配合它,或者优先级高的线程需要完成一些费时的操作,此时优先级高的线程应该让出CPU资源,使优先级低的线程有机会执行。为达到这个目的,优先级高的线程可以在它的run()方法中调用sleep方法来使自己放弃CPU资源,休眠一段时间。休眠时间的长短由sleep方法的参数决定,millsecond是以毫秒为单位的休眠时间。如果线程在休眠时被打断,JVM就抛出InterruptedException异常。因此,必须在try-catch语句块中调用sleep方法。
4.isAlive()
线程处于新建状态时,线程调用isAlive()方法返回 false。当一个线程调用 start)方法,并占有CPU资源后,该线程的run(方法就开始运行,在线程的runQ方法结束之前,即没进入死亡状态之前,线程调用isAlive(方法返回true。当线程进入死亡状态后(实体内在释放),线程仍可以调用方法isAlive(O,这时返回的值是false。需要注意的是,一个已经运行的线程在没有进入死亡状态时,不要再给线程分配实体由于线程只能引用最后分配的实体,先前的实体就会成为“垃圾”,并且不会被垃圾收集昌集掉。例如:Thread thread = new Thread(target);thread.start();如果线程 thread 占有CPU资源进入了运行状态,这时再执行