Java Thread 相关的函数

构造方法摘要 Thread()           分配新的 Thread 对象。 Thread(Runnable target)           分配新的 Thread 对象。 Thread(Runnable target, String name)           分配新的 Thread 对象。 Thread(String name)           分配新的 Thread 对象。 Thread(ThreadGroup group, Runnable target)           分配新的 Thread 对象。 Thread(ThreadGroup group, Runnable target, String name)           分配新的 Thread 对象,以便将 target 作为其运行对象,将指定的 name 作为其名称,并作为 group 所引用的线程组的一员。 Thread(ThreadGroup group, Runnable target, String name, long stackSize)           分配新的 Thread 对象,以便将 target 作为其运行对象,将指定的 name 作为其名称,作为 group 所引用的线程组的一员,并具有指定的堆栈尺寸。 Thread(ThreadGroup group, String name)           分配新的 Thread 对象。   方法摘要 static int activeCount()           返回当前线程的线程组中活动线程的数目。  void checkAccess()           判定当前运行的线程是否有权修改该线程。  int countStackFrames()           已过时。 该调用的定义依赖于 suspend(),但它遭到了反对。此外,该调用的结果从来都不是意义明确的。 static Thread currentThread()           返回对当前正在执行的线程对象的引用。  void destroy()           已过时。 该方法最初用于破坏该线程,但不作任何清除。它所保持的任何监视器都会保持锁定状态。不过,该方法决不会被实现。即使要实现,它也极有可能以 suspend() 方式被死锁。如果目标线程被破坏时保持一个保护关键系统资源的锁,则任何线程在任何时候都无法再次访问该资源。如果另一个线程曾试图锁定该资源,则会出现死锁。这类死锁通常会证明它们自己是“冻结”的进程。有关更多信息,请参阅为何 Thread.stop、Thread.suspend 和 Thread.resume 遭到反对?。 static void dumpStack()           打印当前线程的堆栈跟踪。 static int enumerate(Thread[] tarray)           将当前线程的线程组及其子组中的每一个活动线程复制到指定的数组中。 static Map<Thread,StackTraceElement[]> getAllStackTraces()           返回所有活动线程的堆栈跟踪的一个映射。  ClassLoader getContextClassLoader()           返回该线程的上下文 ClassLoader。 static Thread.UncaughtExceptionHandler getDefaultUncaughtExceptionHandler()           返回线程由于未捕获到异常而突然终止时调用的默认处理程序。  long getId()           返回该线程的标识符。  String getName()           返回该线程的名称。  int getPriority()           返回线程的优先级。  StackTraceElement[] getStackTrace()           返回一个表示该线程堆栈转储的堆栈跟踪元素数组。  Thread.State getState()           返回该线程的状态。  ThreadGroup getThreadGroup()           返回该线程所属的线程组。  Thread.UncaughtExceptionHandler getUncaughtExceptionHandler()           返回该线程由于未捕获到异常而突然终止时调用的处理程序。 static boolean holdsLock(Object obj)           当且仅当当前线程在指定的对象上保持监视器锁时,才返回 true。  void interrupt()           中断线程。 static boolean interrupted()           测试当前线程是否已经中断。  boolean isAlive()           测试线程是否处于活动状态。  boolean isDaemon()           测试该线程是否为守护线程。  boolean isInterrupted()           测试线程是否已经中断。  void join()           等待该线程终止。  void join(long millis)           等待该线程终止的时间最长为 millis 毫秒。  void join(long millis, int nanos)           等待该线程终止的时间最长为 millis 毫秒 + nanos 纳秒。  void resume()           已过时。 该方法只与 suspend() 一起使用,但 suspend() 已经遭到反对,因为它具有死锁倾向。有关更多信息,请参阅为何 Thread.stop、Thread.suspend 和 Thread.resume 遭到反对?。  void run()           如果该线程是使用独立的 Runnable 运行对象构造的,则调用该 Runnable 对象的 run 方法;否则,该方法不执行任何操作并返回。  void setContextClassLoader(ClassLoader cl)           设置该线程的上下文 ClassLoader。  void setDaemon(boolean on)           将该线程标记为守护线程或用户线程。 static void setDefaultUncaughtExceptionHandler(Thread.UncaughtExceptionHandler eh)           设置当线程由于未捕获到异常而突然终止,并且没有为该线程定义其他处理程序时所调用的默认处理程序。  void setName(String name)           改变线程名称,使之与参数 name 相同。  void setPriority(int newPriority)           更改线程的优先级。  void setUncaughtExceptionHandler(Thread.UncaughtExceptionHandler eh)           设置该线程由于未捕获到异常而突然终止时调用的处理程序。 static void sleep(long millis)           在指定的毫秒数内让当前正在执行的线程休眠(暂停执行)。 static void sleep(long millis, int nanos)           在指定的毫秒数加指定的纳秒数内让当前正在执行的线程休眠(暂停执行)。  void start()           使该线程开始执行;Java 虚拟机调用该线程的 run 方法。  void stop()           已过时。 该方法具有固有的不安全性。用 Thread.stop 来终止线程将释放它已经锁定的所有监视器(作为沿堆栈向上传播的未检查 ThreadDeath 异常的一个自然后果)。如果以前受这些监视器保护的任何对象都处于一种不一致的状态,则损坏的对象将对其他线程可见,这有可能导致任意的行为。stop 的许多使用都应由只修改某些变量以指示目标线程应该停止运行的代码来取代。目标线程应定期检查该变量,并且如果该变量指示它要停止运行,则从其运行方法依次返回。如果目标线程等待很长时间(例如基于一个条件变量),则应使用 interrupt 方法来中断该等待。有关更多信息,请参阅《为何不赞成使用 Thread.stop、Thread.suspend 和 Thread.resume?》。  void stop(Throwable obj)           已过时。 该方法具有固有的不安全性。请参阅 stop() 以获得详细信息。该方法的附加危险是它可用于生成目标线程未准备处理的异常(包括若没有该方法该线程不太可能抛出的已检查的异常)。有关更多信息,请参阅为何不推荐使用 Thread.stop、Thread.suspend 和 Thread.resume?。  void suspend()           已过时。 该方法已经遭到反对,因为它具有固有的死锁倾向。如果目标线程挂起时在保护关键系统资源的监视器上保持有锁,则在目标线程重新开始以前任何线程都不能访问该资源。如果重新开始目标线程的线程想在调用 resume 之前锁定该监视器,则会发生死锁。这类死锁通常会证明自己是“冻结”的进程。有关更多信息,请参阅为何 Thread.stop、Thread.suspend 和 Thread.resume 遭到反对?。  String toString()           返回该线程的字符串表示形式,包括线程名称、优先级和线程组。 static void yield()           暂停当前正在执行的线程对象,并执行其他线程。   建议上网下个jdk1.6的帮助文档

Java Thread 相关的函数

时间: 2024-10-29 19:10:59

Java Thread 相关的函数的相关文章

java基础知识回顾之java Thread类学习(六)--java多线程同步函数用的锁

1.验证同步函数使用的锁----普通方法使用的锁 思路:创建两个线程,同时操作同一个资源,还是用卖票的例子来验证.创建好两个线程t1,t2,t1线程走同步代码块操作tickets,t2,线程走同步函数封装的代码操作tickets,同步代码块中的锁我们可以指定.假设我们事先不知道同步函数用的是什么锁:如果在同步代码块中指定的某个锁(测试)和同步函数用的锁相同,就不会出现线程安全问题,如果锁不相同,就会发生线程安全问题. 看下面的代码:t1线程用的同步锁是obj,t2线程在操作同步函数的资源,假设不

性能分析之-- JAVA Thread Dump 分析综述

性能分析之-- JAVA Thread Dump 分析综述 一.Thread Dump介绍 1.1什么是Thread Dump? Thread Dump是非常有用的诊断Java应用问题的工具.每一个Java虚拟机都有及时生成所有线程在某一点状态的thread-dump的能力,虽然各个 Java虚拟机打印的thread dump略有不同,但是大多都提供了当前活动线程的快照,及JVM中所有Java线程的堆栈跟踪信息,堆栈信息一般包含完整的类名及所执行的方法,如果可能的话还有源代码的行数. 1.2 T

Java thread(2)

这一块主要是从Thread类源码的角度来分析两种线程的实现方式,这里分析的也仅仅是最基本的部分. 就从线程的启动函数 start方法开始分析 只是分析最主要的部分 在start()方法中,除了group的相关操作(这个后面再分析),最核心的部分就是执行了start0方法这个start0方法是native方法,表示这里需要与操作系统进行交互,具体的还没有深入研究,貌似是申请一些资源,启动一个新的线程,并且在新的线程中会对run()方法进行调用.所以我们用到的start方法说白了就是以一个线程的方式

面试总结(一)——Java基础相关知识

面试总结(一)--Java基础相关知识 最近在面试,所以总结下面试容易问到的知识点,用来备份查看用. 若需转载,请注明出处. 1.面向对象的特点: 1.将复杂的事情简单化 2.面向对象将以前过程中的执行者,变成了指挥者 3.面向对象思想是符合人们思考习惯的思想 2.面向对象特征: 1.封装:隐藏对象的属性和实现的细节,仅对外提供公共访问方式 好处:将变化隔离,便于使用,提高复用和安全性. 原则:将不需要对外提供的内容隐藏起来,隐藏属性,提供公共方法对其访问. 2.继承:提高代码复用性,继承是多态

性能分析之-- JAVA Thread Dump 分析综述【转】

一.Thread Dump介绍 1.1什么是Thread Dump? Thread Dump是非常有用的诊断Java应用问题的工具.每一个Java虚拟机都有及时生成所有线程在某一点状态的thread-dump的能力,虽然各个 Java虚拟机打印的thread dump略有不同,但是大多都提供了当前活动线程的快照,及JVM中所有Java线程的堆栈跟踪信息,堆栈信息一般包含完整的类名及所执行的方法,如果可能的话还有源代码的行数. 1.2 Thread Dump特点 1. 能在各种操作系统下使用 2.

Java集合相关面试问题和答案

Java集合相关面试问题和答案 面试试题 1.Java集合框架是什么?说出一些集合框架的优点? 每种编程语言中都有集合,最初的Java版本包含几种集合类:Vector.Stack.HashTable和Array.随着集合的广泛使用,Java1.2提出了囊括所有集合接口.实现和算法的集合框架.在保证线程安全的情况下使用泛型和并发集合类,Java已经经历了很久.它还包括在Java并发包中,阻塞接口以及它们的实现.集合框架的部分优点如下: (1)使用核心集合类降低开发成本,而非实现我们自己的集合类.

java基础知识回顾之java Thread类学习(八)--java多线程通信等待唤醒机制经典应用(生产者消费者)

 *java多线程--等待唤醒机制:经典的体现"生产者和消费者模型 *对于此模型,应该明确以下几点: *1.生产者仅仅在仓库未满的时候生产,仓库满了则停止生产. *2.消费者仅仅在有产品的时候才能消费,仓空则等待. *3.当消费者发现仓储没有产品可消费的时候,会唤醒等待生产者生产. *4.生产者在生产出可以消费的产品的时候,应该通知等待的消费者去消费. 下面先介绍个简单的生产者消费者例子:本例只适用于两个线程,一个线程生产,一个线程负责消费. 生产一个资源,就得消费一个资源. 代码如下: pub

java基础知识回顾之java Thread类学习(七)--java多线程通信等待唤醒机制(wait和notify,notifyAll)

1.wait和notify,notifyAll: wait和notify,notifyAll是Object类方法,因为等待和唤醒必须是同一个锁,不可以对不同锁中的线程进行唤醒,而锁可以是任意对象,所以可以被任意对象调用的方法,定义在Object基类中. wait()方法:对此对象调用wait方法导致本线程放弃对象锁,让线程处于冻结状态,进入等待线程的线程池当中.wait是指已经进入同步锁的线程,让自己暂时让出同步锁,以便使其他正在等待此锁的线程可以进入同步锁并运行,只有其它线程调用notify方

java基础知识回顾之java Thread类学习(五)--java多线程安全问题(锁)同步的前提

这里举个例子讲解,同步synchronized在什么地方加,以及同步的前提: * 1.必须要有两个以上的线程,才需要同步. * 2.必须是多个线程使用同一个锁. * 3.必须保证同步中只能有一个线程在运行,锁加在哪一块代码 那么我们要思考的地方有:1.知道我们写的哪些是多线程代码 2.明确共享数据 3.明确多线程运行的代码中哪些语句是操作共享数据的.. 4.要确保使用同一个锁. 下面的代码:需求:两个存户分别往银行存钱,每次村100块,分三次存完. class bank{ private int