java多线程学习(六)---Thread其它方法

这篇主要是介绍java API中Thread类的其他方法的作用

Thread类

void interrupt() 中断线程。
  当线程处于冻结状态时(即,wait()、sleep())执行方法受阻时,
调用该方法,会将处于冻结状态的线程回复到运行状态。会出现一个InterruptException异常
void setPriority() 设置线程的优先级。线程一共有10个优先级,最大的优先级为10,最小为1.

 默认为5。

class InterRunnable implements Runnable{
  private int x;
  private boolean flag=true;
  public synchronized void run(){
      if(flag){
        try{
          wait();  //让线程处于等待状态
        }catch(InterruptedException e){
            System.out.println(Thread.currentThread().getName()+"....exception..");
            flag = false;
        }
        System.out.println(Thread.currentThread().getName()+"....run.."+x++);
      }
  }
  public void changeFlag(){
    this.flag = false;
  }
}
public class ThreadMethod{
  public static void main(String args[]){
    InterRunnable ir = new InterRunnable();
    Thread t1 = new Thread(ir);
    Thread t2 = new Thread(ir);
    Thread t3 = new Thread(ir);
    t1.setPriority(Thread.MAX_PRIORITY);   //设置最大优先级
    t2.setPriority(Thread.MAX_PRIORITY);
    t1.start();
    t2.start();
    t3.start();
    for(int i=0;i<100;i++){
      if(i==60){
        t1.interrupt();
        t2.interrupt();
        t3.interrupt();
        break;   //当i=60时,就让程序结束
      }
      System.out.println(Thread.currentThread().getName()+"........"+i);
    }
      System.out.println("over");
  }
}
void setDaemon(boolean on)将该线程标记为守护线程或用户线程。
 该方法又称设置线程为后台线程,当它所依附的前台线程消亡时,它也自动消亡。

class InterRunnable implements Runnable{
  private int x;
  private boolean flag=true;
  public synchronized void run(){
    while(flag)
      System.out.println(Thread.currentThread().getName()+"....run.."+x++);
  }
  public void changeFlag(){
    this.flag = false;
  }
}
public class ThreadMethod{
  public static void main(String args[]){
    InterRunnable ir = new InterRunnable();
    Thread t1 = new Thread(ir);
    Thread t2 = new Thread(ir);
    Thread t3 = new Thread(ir);
    t1.setDaemon(true); //设置为守护线程
    t2.setDaemon(true); //设置为守护线程
    t3.setDaemon(true); //设置为守护线程
    t1.start();
    t2.start();
    t3.start();
    for(int i=0;i<100;i++){
      if(i==60){
        break;   //当i=60时,就让程序结束
      }
      System.out.println(Thread.currentThread().getName()+"........"+i);
    }
      System.out.println("over");
  }
}
void join()等待该线程终止
 当线程A执行到了B线程的join方法时,A就会等待,等B执行完了之后,A才会执行。
 join可以用来临时加入线程执行。


<span style="font-size:18px;">class InterRunnable implements Runnable{
  private int x;
  private boolean flag=true;
  public void run(){
    for(int i=0;i<50;i++)
      System.out.println(Thread.currentThread().getName()+"....run.."+i++);
  }
  public void changeFlag(){
    this.flag = false;
  }
}
public class ThreadMethod{
  public static void main(String args[])throws Exception{
    InterRunnable ir = new InterRunnable();
    Thread t1 = new Thread(ir);
    Thread t3 = new Thread(ir);
    t1.start();
    t1.join();
    t3.start();
    for(int i=0;i<100;i++){
      if(i==60){
        break;   //当i=60时,就让程序结束
      }
      System.out.println(Thread.currentThread().getName()+"........"+i);
    }
      System.out.println("over");
  }
}</span>
static void yield()
           暂停当前正在执行的线程对象,并执行其他线程。
String toString()
          返回该线程的字符串表示形式,包括线程名称、优先级和线程组。

<span style="font-size:18px;">class InterRunnable implements Runnable{
  private int x;
  private boolean flag=true;
  public void run(){
    for(int i=0;i<50;i++)
      System.out.println(Thread.currentThread().getName()+"....run.."+i++);
      Thread.yield();
  }
  public void changeFlag(){
    this.flag = false;
  }
}
public class ThreadMethod{
  public static void main(String args[])throws Exception{
    InterRunnable ir = new InterRunnable();
    Thread t1 = new Thread(ir);
    Thread t3 = new Thread(ir);
    t1.start();
    t3.start();
  }
}
</span>





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值