JAVA多线程学习3--线程一些方法
一、通过sleep方法睡眠
在指定的毫秒数内让当前正在执行的线程休眠(暂停执行)。该线程不丢失任何监视器的所属权。
二、线程优先级
线程具有优先级,范围为1-10。
MAX_PRIORITY
线程可以具有的最高优先级。int类型,值为10.
MIN_PRIORITY
线程可以具有的最低优先级。int类型,值为1.
NORM_PRIORITY
分配给线程的默认优先级。int类型,值为5.
可以通过setPriority()设置线程的优先级。
三、yield方法让出cpu
yield方法线程高风亮节让出CPU一次。
四、停止线程的方法
stop()方法已经被弃用,原因是不太安全。API文档中给出了具体的详细解释。
通过interrupted()方法打断线程。不推荐。
通过共享变量结束run()方法,进而停止线程。如实例
public class ThreadInterrupt { public static void main(String []args){ Runner run = new Runner(); run.start(); try { Thread.sleep(10000); } catch (InterruptedException e) { // TODO Auto-generated catch block } //run.stop();//已经废弃的方法,不建议使用,过于粗暴 //run.interrupt(); //抛出异常,但是在异常处理中写业务显然不合适,不建议使用 run.flag=false;//建议使用的停止线程的方法 } } class Runner extends Thread{ boolean flag = true; public void run(){ /* while(true){ System.out.println(new Date()+"----"); try { sleep(1000); } catch (InterruptedException e) { // TODO Auto-generated catch block System.out.println("Interrupted"); return; } } */ while(flag){ System.out.println(new Date()+"----"); try { sleep(1000); } catch (InterruptedException e) { // TODO Auto-generated catch block System.out.println("Interrupted"); return; } } } }
五、Thread的sleep()方法与Object类的wait()方法比较
sleep()方法使线程休眠一定时间,休眠期间线程依然拥有之前获得的锁。而wait()方法使线程处于等待,等待期间线程不再拥有之前获得的锁。当其他进程通过notify唤醒进程后,线程重新去抢资源的锁。wait()方法一般与notify()或notifyAll()方法一起出现。