JAVA SE 线程基础操作

常用方法

构造方法

  • Thread()
  • Thread(Runnable target) //分配新的 Thread 对象。 
  • Thread(Runnable target, String name) 
  • Thread(String name) 
  • Thread(ThreadGroup group, Runnable target) //线程组的一员。 
  • Thread(ThreadGroup group, Runnable target, String name) //将 target 作为其运行对象
  • Thread(ThreadGroup group, Runnable target, String name, long stackSize) //具有指定的堆栈大小。
  • Thread(ThreadGroup group, String name)

获取信息

  • static int activeCount() //返回当前线程的线程组中活动线程的数目
  • long getId() //返回该线程的标识符。 
  • String getName() //返回该线程的名称。 
  • int getPriority() //返回线程的优先级
  • Thread.State getState() //返回该线程的状态。 

获取对象

  • static Thread currentThread() //返回对当前正在执行的线程对象的引用
  • static int enumerate(Thread[] tarray) //将当前线程的线程组及其子组中的每一个活动线程复制到指定的数组中
  • ClassLoader getContextClassLoader() //返回该线程的上下文 ClassLoader
  • ThreadGroup getThreadGroup() //返回该线程所属的线程组

获取状态

  • static boolean interrupted() //测试当前线程是否已经中断
  • boolean isAlive() //测试线程是否处于活动状态。
  • boolean isDaemon() //测试该线程是否为守护线程。
  • boolean isInterrupted() //测试线程是否已经中断
  • static boolean holdsLock(Object obj) //线程在指定的对象上保持监视器锁时,才返回 true

修改信息

  • void setContextClassLoader(ClassLoader cl) //设置该线程的上下文 ClassLoader。
  • void setDaemon(boolean on) //将该线程标记为守护线程或用户线程
  • void setPriority(int newPriority) //更改线程的优先级

修改状态

  • void interrupt() //中断线程。
  • void join() //等待该线程终止。
  • void join(long millis) //等待该线程终止的时间最长为 millis 毫秒。
  • void join(long millis, int nanos) //等待该线程终止的时间最长为 millis 毫秒 + nanos 纳秒
  • void run() //如果该线程是使用独立的 Runnable 运行对象构造的,则调用该 Runnable 对象的 run 方法;否则,该方法不执行任何操作并返回。
  • static void sleep(long millis) //让当前正在执行的线程休眠(暂停执行),此操作受到系统计时器和调度程序精度和准确性的影响。
  • static void sleep(long millis, int nanos)
  • void start() //使该线程开始执行;Java 虚拟机调用该线程的 run 方法
  • static void yield() //暂停当前正在执行的线程对象,并执行其他线程

获取线程信息

实例:main函数的对应main线程

public class Test {
    public static void main(String[] args){
        System.out.println(Thread.currentThread());//Thread[main,5,main]
        System.out.println(Thread.currentThread().getId());//1
        System.out.println(Thread.currentThread().getName());//main
        System.out.println(Thread.currentThread().getState());//RUNNABLE
        System.out.println(Thread.currentThread().getPriority());//5
    }
}

创建线程

  • 继承Thread类
  • 实现Runnable接口

实例 : 计算大于某一规定值的质数的线程

//(继承Thread类)
class PrimeThread extends Thread {
         long minPrime;
         PrimeThread(long minPrime) {
             this.minPrime = minPrime;
         }
 	 //重写run方法
         public void run() {
             // compute primes larger than minPrime
              . . .
         }
}
//(实现Runnable接口)
class PrimeRun implements Runnable {
         long minPrime;
         PrimeRun(long minPrime) {
             this.minPrime = minPrime;
         }
 
         public void run() {
             // compute primes larger than minPrime
              . . .
         }
}
//创建并启动一个线程
PrimeThread p = new PrimeThread(143);
p.start();

休眠线程

猜你喜欢

转载自blog.csdn.net/weixin_38500325/article/details/81545834