Java线程操作的常见方法【线程名称获取、设置、线程启动判断等】

本文实例讲述了Java线程操作的常见方法。分享给大家供大家参考,具体如下:

一 线程名称的操作

1 代码

public class GetNameThreadDemo extends Thread
{
  public void run()
  {
   for( int i = 0; i < 5; ++i )
   {
     printMsg();
     try
     {
      Thread.sleep(1000);    // 睡眠1秒
     }
     catch( InterruptedException e )
     {
      e.printStackTrace();
     }
   }
  }
  public void printMsg()
  {
   // 获得运行此代码的线程的引用
   Thread t = Thread.currentThread();
   String name = t.getName();
   System.out.println( "name = " + name );
  }
  public static void main( String[] args )
  {
   GetNameThreadDemo t1 = new GetNameThreadDemo();
   t1.start();
   for( int i = 0; i < 5; ++i )
   {
     t1.printMsg();
     try
     {
      Thread.sleep(1000);    // 睡眠1秒
     }
     catch( InterruptedException e )
     {
      e.printStackTrace();
     }
   }
  }
}

2 运行

name = main
name = Thread-0
name = main
name = Thread-0
name = main
name = Thread-0
name = main
name = Thread-0
name = main
name = Thread-0

二 设置与获取线程名称

1 代码

public class GetSetNameThreadDemo implements Runnable
{
  public void run( )
  {
    Thread temp = Thread.currentThread( );//获取执行这条语句的线程实例
    System.out.println("执行这条语句的线程名字:" + temp.getName( ));
  }
  public static void main(String[] args)
  {
    Thread t = new Thread(new GetSetNameThreadDemo( ));
    t.setName("线程_范例演示");
    t.start();
  }
}

2 运行

执行这条语句的线程名字:线程_范例演示

三 判断线程是否启动

1 代码

public class StartThreadDemo extends Thread
{
  public void run()
  {
   for( int i = 0; i < 5; ++i )
   {
     printMsg();
   }
  }
  public void printMsg()
  {
   // 获得运行此代码的线程的引用
   Thread t = Thread.currentThread();
   String name = t.getName();
   System.out.println( "name = " + name );
  }
  public static void main( String[] args )
  {
   StartThreadDemo t = new StartThreadDemo();
   t.setName( "test Thread" );
   System.out.println( "调用start()方法之前 , t.isAlive() = " + t.isAlive() );
   t.start();
   System.out.println( "刚调用start()方法时 , t.isAlive() = " + t.isAlive() );
   for( int i = 0; i < 5; ++i )
   {
     t.printMsg();
   }
   // 下面语句的输出结果是不固定的,有时输出false,有时输出true
   System.out.println( "main()方法结束时 , t.isAlive() = " + t.isAlive() );
  }
}

2 运行

调用start()方法之前 , t.isAlive() = false
刚调用start()方法时 , t.isAlive() = true
name = main
name = main
name = main
name = test Thread
name = main
name = test Thread
name = main
name = test Thread
main()方法结束时 , t.isAlive() = true
name = test Thread
name = test Thread
 
Process finished with exit code 0

更多java相关内容感兴趣的读者可查看本站专题:《Java进程与线程操作技巧总结》、《Java数据结构与算法教程》、《Java操作DOM节点技巧总结》、《Java文件与目录操作技巧汇总》和《Java缓存操作技巧汇总》

希望本文所述对大家java程序设计有所帮助。

(0)

相关推荐

  • Java使用Thread创建多线程并启动操作示例

    本文实例讲述了Java使用Thread创建多线程并启动操作.分享给大家供大家参考,具体如下: 按照教程实现了一个单线程的创建,但是单线程的创建于启动并不是很有实用价值的.毕竟直接在main方法中放着相关的执行操作本身也就是一种单线程的实现.接下来在之前用过的代码基础上稍作修改,形成如下代码: class ThreadDemo extends Thread { ThreadDemo(){}; ThreadDemo(String szName) { super(szName); } public v

  • Java后台线程操作示例【守护线程】

    本文实例讲述了Java后台线程操作.分享给大家供大家参考,具体如下: 一 点睛 有一种线程,它是后面运行的,它的任务是为其他线程提供服务,这种线程被称为"后台"线程,又称为"守护线程"或"精灵线程".JVM的垃圾回收线程就是典型的后台线程. 后台线程有个特征:如果所有的前台线程都死亡,后台线程会自动死亡, 调用Thread对象的setDaemon(true)方法可将指定线程设置成后台线程,所有的前台线程都死亡时,后台线程随之死亡.当整个虚拟机中只

  • Java使用Callable和Future创建线程操作示例

    本文实例讲述了Java使用Callable和Future创建线程操作.分享给大家供大家参考,具体如下: 一 点睛 从Java 5开始,Java提供了Callable接口,该接口是Runnable接口的增强版,Callable接口提供了一个call()方法,可以看作是线程的执行体,但call()方法比run()方法更强大. call()方法可以有返回值. call()方法可以声明抛出异常. 创建并启动线程的步骤如下: 1 创建Callable接口的实现类,并实现call()方法,该call()方法

  • Java线程的start方法回调run方法的操作技巧

    面试中可能会被问到为什么我们调用start()方法时会执行run()方法,为什么我们不能直接调用run()方法? Java 创建线程的方法 实际上,创建线程最重要的是提供线程函数(回调函数),该函数作为新创建线程的入口函数,实现自己想要的功能.Java 提供了两种方法来创建一个线程: 继承 Thread 类 class MyThread extends Thread{ public void run() { System.out.println("My thread is started.&qu

  • java线程同步操作实例详解

    本文实例讲述了java线程同步操作.分享给大家供大家参考,具体如下: java线程同步 public class Hello { public static void main(String[] args) { MyRun myRun0 = new MyRun(); new Thread(myRun0, "Thread0").start(); new Thread(myRun0, "Thread1").start(); new Thread(myRun0, &quo

  • Java线程协调运行操作实例详解

    本文实例讲述了Java线程协调运行操作.分享给大家供大家参考,具体如下: 一 点睛 借助于Object类提供的wait().notify()和notifyAll()三个方法,可实现Java线程协调运行.这三个方法并不属于Thread类,而是属于Object类.但这三个方法必须同步监视器对象调用. 关于这三个方法的解释如下: wait():导致当前线程等待,直到其他线程调用该同步监视器的notify()方法或notifyAll()方法来唤醒该线程.该wait()方法有三种形式:无时间参数的wait

  • Java中join线程操作实例分析

    本文实例讲述了Java中join线程操作.分享给大家供大家参考,具体如下: 一 点睛 Tread提供了让一个线程等待另外一个线程完成的方法--join()方法.当在某个程序执行流中调用其他线程的join()方法时,调用线程将被阻塞,直到被join()方法加入的join线程执行完后为止. join()方法通常由使用线程的程序调用,以将大问题划分成许多小问题,每个小问题分配一个线程.当所有小问题都得到处理后,再调用主线程来进一步操作. 二 代码 public class JoinThread ext

  • Java8并行流中自定义线程池操作示例

    本文实例讲述了Java8并行流中自定义线程池操作.分享给大家供大家参考,具体如下: 1.概览 java8引入了流的概念,流是作为一种对数据执行大量操作的有效方式.并行流可以被包含于支持并发的环境中.这些流可以提高执行性能-以牺牲多线程的开销为代价 在这篇短文中,我们将看一下 Stream API的最大限制,同时看一下如何让并行流和线程池实例(ThreadPool instance)一起工作. 2.并行流Parallel Stream 我们先以一个简单的例子来开始-在任一个Collection类型

  • 详解Java多线程编程中线程的启动、中断或终止操作

    线程启动: 1.start() 和 run()的区别说明 start() : 它的作用是启动一个新线程,新线程会执行相应的run()方法.start()不能被重复调用. run() : run()就和普通的成员方法一样,可以被重复调用.单独调用run()的话,会在当前线程中执行run(),而并不会启动新线程! 下面以代码来进行说明. class MyThread extends Thread{ public void run(){ ... } }; MyThread mythread = new

  • Java多线程编程中使用Condition类操作锁的方法详解

    Condition的作用是对锁进行更精确的控制.Condition中的await()方法相当于Object的wait()方法,Condition中的signal()方法相当于Object的notify()方法,Condition中的signalAll()相当于Object的notifyAll()方法.不同的是,Object中的wait(),notify(),notifyAll()方法是和"同步锁"(synchronized关键字)捆绑使用的:而Condition是需要与"互斥

随机推荐