疯狂java


您现在的位置: 疯狂软件 >> 新闻资讯 >> 正文

控制线程的常用函数


 

   

  中断线程:Thread.sleep() 和 Thread.yield()

  在线程体中调用Thread. sleep()时需要向括号内传入参数:毫秒,一旦线程执行了这方法则进入休眠状态,不再运行程序并让出cpu执行时间。当过了休眠时间后,线程并不会马上进入运行状态,而是进入就绪状态与其他线程抢占cpu执行时间。

  //定义用于实现接口Runnable的类

  class RunnableImp implements Runnable{

  //复写Runnable唯一的方法run

  public void run(){

  for(int i = 0;i < 10; i++){

  System.out.println("Runnable-->" + i);

  if(i == 5){

  try{

  Thread.sleep(3000); //休眠3000毫秒

  }

  catch(Exception e){

  System.out.println(e);

  }

  }

  }

  }

  }

  class Test{

  public static void main(String args[]){

  //生成RunnableImp的对象

  RunnableImp ri = new RunnableImp();

  //将ri传入,生成Thread对象

  Thread t = new Thread(ri);

  //调用Thread的start方法

  t.start();

  }

  }

  当程序运行到i的值为5时,会停留3000毫秒后再继续运行。

  在线程体中调用Thread.yield()时,当运行到这行代码时,当前线程自动让步,不在占用cpu执行时间进入就绪状态,与其他线程再次抢占cpu执行时间,并不能保证其他线程能被执行。

  设置线程的优先级: getPriority() 和 setPriority()

  class Test{

  public static void main(String args[]){

  RunnableImp ri = new RunnableImp();

  Thread t = new Thread(ri);

  //获取线程t的默认优先级

  System.out.println(t.getPriority());

  //设置线程的最大优先级

  t.setPriority(Thread.MAX_PRIORITY);

  System.out.println(t.getPriority());

  //设置线程的最小优先级

  t.setPriority(Thread.MIN_PRIORITY);

  System.out.println(t.getPriority());

  t.start();

  }

  }

  F:AndroidJava4Android37src>java Test

  5

  10

  1

  Runnable-->0

  Runnable-->1

  Runnable-->2

  Runnable-->3

  Runnable-->4

  Runnable-->5

  Runnable-->6

  Runnable-->7

  Runnable-->8

  Runnable-->9

  F:AndroidJava4Android37src>