`

Java Thread (1)

    博客分类:
  • Java
阅读更多
 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
评论

相关推荐

    JavaThread

    JavaThread

    java thread dump 分析

    1. 获取 Thread Dump 2. 分析 Thread Dump,找到导致 CPU 高的线程 3. 分析线程的状态、锁信息、死锁信息等 4. 根据分析结果,定位性能瓶颈 在分析 Thread Dump 时,可以使用一些工具,例如 `jvis`、`VisualVM` 等...

    Java Thread用法 经典

    ### Java Thread用法详解 #### 一、Java线程基础概念与重要性 在Java编程语言中,线程是程序执行的基本单位之一,它能够帮助我们实现多任务处理,提高程序运行效率。Java中的线程主要通过`java.lang.Thread`类来...

    Java thread dump analyzer (tda)

    Java线程分析工具(TDA)是一款专为Java开发者设计的强大工具,用于解析和理解Java应用程序的线程转储(thread dump)。线程转储是Java虚拟机(JVM)在特定时刻生成的一种快照,其中包含了应用程序中所有活动线程的状态...

    Java Thread Programming

    线程的优先级也是Java线程编程中的一个重要概念,Java定义了10个线程优先级,从MIN_PRIORITY(1)到MAX_PRIORITY(10),默认优先级是NORM_PRIORITY(5)。不过,线程调度器可能会根据系统情况调整优先级,因此优先级并不...

    java一个多线程的经典例子

    System.out.println("主线程没有找到thread1, thread1已顺利执行完毕!"); } ``` 以上是Java多线程经典示例中所包含的关键知识点。通过这些知识点的学习,可以更好地理解和掌握Java多线程的基本原理和使用方法。

    java Thread

    为保证不会出现卖出同一个票数,要java多线程同步锁。 设计思路:1.创建一个站台类Station,继承Thread,重写run方法,在run方法里面执行售票操作!售票要使用同步锁:即有一个站台卖这张票时,其他站台要等这张票卖...

    Java-Thread-Affinity,将Java线程绑定到给定的内核.zip

    Java线程亲和性(Thread Affinity)是一个高级并发编程概念,主要涉及到操作系统调度和硬件资源的优化。在多核处理器系统中,线程亲和性允许开发者指定某个线程应该运行在哪个特定的处理器核心上,从而提高性能、...

    java thread

    java 應用 thread 的小程式 計算 time 的

    java_thread_demo

    本示例"java_thread_demo"很可能是关于Java线程编程的一个实例项目,其中可能包含了创建、管理及同步线程的各种方法。 在Java中,线程可以通过两种方式创建:继承Thread类或者实现Runnable接口。继承Thread类时,你...

    Java Thread Dump Analyzing

    Java Thread Dump Analyzing

    JAVA thread

    在Java编程语言中,线程(Thread)是执行单元,它允许程序同时执行多个任务。在"JAVA thread"这个主题中,我们主要关注的是如何在Java中创建和管理线程,以及如何通过线程实现并发执行,就像"龟兔赛跑"这个小游戏所...

    Java Thread in JVM

    Java Thread在JVM中的实现与理解 Java Thread是Java编程语言中处理并发执行的基本单元,它在Java虚拟机(JVM)中有着重要的地位。本文将深入探讨Java Thread的语法特性以及其在JVM内部的编译结果,帮助开发者更好地...

    Java线程(Java.Thread)(中英版)

    在Java中,线程是通过`java.lang.Thread`类或者实现`Runnable`接口来创建和管理的。这个资料包包含的是关于Java线程的中英文参考资料,包括书籍和源代码。 "Java.Threads,3rd.Edition.chm"可能是一个关于Java线程的...

    java线程案例

    在"JavaThread1"这个案例中,可能涵盖了以上的一些概念,例如创建线程并观察其执行顺序,使用`synchronized`关键字实现线程安全的共享数据访问,或者通过`wait()`和`notify()`实现线程间的协调。通过分析这个案例,...

    Java Thread Programming (Sams) java线程编程(含code)

    本资源“Java Thread Programming (Sams)”提供了详细的线程编程知识,结合了理论与实际代码,旨在帮助开发者深入理解并熟练掌握Java线程。 1. **线程概念** - 线程是操作系统调度的基本单位,一个进程可以包含多...

    各种 Java Thread State 第一分析法则 - 旁观者 - 博客园

    各种 Java Thread State 第一分析法则

Global site tag (gtag.js) - Google Analytics