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()方法一起出现。

posted @ 2013-11-24 18:05  qiuhuilu  阅读(320)  评论(0编辑  收藏  举报