Java Thread (1)

 1、开启一个新线程的方法,归结起来不外乎有两种:
  • 继承类java.lang.Thread ,覆盖其中的方法 run(); 实例化该子类,例如:
    public   class  MyThread  extends  Thread 
    {
       
    public   void  run() 
      {
          
    //  do some work
       }
    }
    //  code to use MyThread
    new  MyThread().start();
  • 定义一个实现接口 java.lang.Runnable; 的类,实现该接口的方法run(); 然后将该类的一个实例作为实参传给Thread的构造方法。例如:
    public   class  MyThread2  implements  Runnable 
    {
       
    public   void  run() 
      {
          
    //  do some work
       }
    }

    //  code to use MyThread2
    Thread t  =   new  Thread(MyThread2);
    t.start();
  • 无论用哪种方法最终得到的都是一个Thread的object,当调用方法start()时,系统将创建一个新的线程来执行run() 方法,这个新的线程将一直运行知道run方法退出。在新线程开始运行的同时,原来的线程也将继续执行start()之后的代码。
2、一个线程的生命周期:每个线程的生命周期(lifecycle)一共有六个状态(state),这六个状态用枚举类型Thread.State的六个枚举常量来表示。分别是:
3、线程优先级:线程可以有不同优先级,Thread定义了三个优先级常量:
public   final   static   int  MIN_PRIORITY  =   1 // 最小优先级
public   final   static   int  NORM_PRIORITY  =   5 // 默认的优先级
public   final   static   int  MAX_PRIORITY  =   10 // 最大优先级
一个线程的优先级可以是1到10中任何一个整数(包括1和10).方法 void setPriority(int newPriority) 可以用来设置线程有限级。关于优先级需要注意的是,调度器总是选择优先级最高的线程来执行,但是java的线程优先级是和操作系统相关的,例如windows XP系统有7个优先级,java中的某些优先级会对应到xp的7个优先级中去。但是SUN 的linux版本的JVM上所有线程的优先级都是NORM_PRIORITY。在使用优先级的同时也要避免饿死的情况出现。

4、处理 uncaught exceptions:
当一个线程的run()方法执行完毕或者run()方法执行return语句时,线程正常中止。当run方法抛出一个unchecked异常时(注意:run方法是不能抛出checked异常的),线程也会中止并且打印出异常信息。如果你想捕获处理该异常,则必须为该线程添加一个uncaught exception handler来执行。例如:
package uncaughtexception;
public class MyThread implements Runnable
{
    @Override
    
public void run()
    {
        
throw new UnsupportedOperationException();
    }
}


package uncaughtexception;

public class TestMyThread
{
    
public static void main(String [] args)
    {
        Thread aThread 
= new Thread(new MyThread());
        
        aThread.setUncaughtExceptionHandler(
new Thread.UncaughtExceptionHandler()
        {
            @Override
            
public void uncaughtException(Thread t, Throwable e)
            {
                System.out.println(
"Hello");
            }
        });
        
        aThread.start();
    }
}
运行结果: Hello
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值