JAVA多线程学习3--线程一些方法

时间:2024-03-31 15:03:38

一、通过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();
} 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();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
System.out.println("Interrupted");
return;
}
}
}
}

五、Thread的sleep()方法与Object类的wait()方法比较

  sleep()方法使线程休眠一定时间,休眠期间线程依然拥有之前获得的锁。而wait()方法使线程处于等待,等待期间线程不再拥有之前获得的锁。当其他进程通过notify唤醒进程后,线程重新去抢资源的锁。wait()方法一般与notify()或notifyAll()方法一起出现。