zoukankan      html  css  js  c++  java
  • 线程的对象方法

    1.start()方法

    • start()方法用来启动一个线程,当调用start方法后,系统才会开启一个新的线程来执行用户定义的子任务,在这个过程中,会为相应的线程分配需要的资源。

    2.run()方法

    • run()方法不需要用来进行调用,当通过start方法启动一个线程后,当线程获得了CPU执行时间,便进入run方法去执行具体的任务。
    • 继承Thread类的时候必须重写run方法,在run方法中定义具体要执行的任务。

    3.getId()方法

    • getId()的作用是取得线程的唯一标识。
    1 package day02;
    2 
    3 public class Threadtest02 {
    4     public static void main(String[] args) {
    5         Thread thread1 = Thread.currentThread();
    6         System.out.println(thread1.getId());
    7     }
    8 }

    执行结果:

     4.isAlive()方法

    • 方法isActive()的作用是检查线程是否处于活动状态。活动状态就算线程已经启动且未终止。
    • 线程处于正在运行或者准备开始运行的状态,这种情况就认为线程是存活的。
     1 package day02;
     2 
     3  
     4 
     5 public class IsAliveMethod {
     6 
     7  
     8 
     9     public static void main(String[] args) {
    10 
    11         Thread thread1 = new IsAliveMethod().new MyThread();
    12 
    13         System.out.println("begin:" + thread1.isAlive());
    14 
    15         thread1.start();
    16 
    17         System.out.println("end:" + thread1.isAlive());
    18 
    19  
    20 
    21     }
    22 
    23     class MyThread extends Thread {
    24 
    25  
    26 
    27         @Override
    28 
    29         public void run() {
    30 
    31             System.out.println("IsAlive:" + this.isAlive());
    32 
    33  
    34 
    35         }
    36 
    37     }
    38 
    39 }

    运行结果:

    5、join()方法 

    • 在很多情况下,主线程创建并启动了线程,如果子线程中进行大量耗时运算,主线程往往将早于子线程结束之前结束。
    • 如果主线程想等待子线程执行完成之后再结束,比如子线程处理一个数据,主线程要取得这个数据中的值,就要用到join()方法了。
    • 方法join()的作用是等待线程对象销毁。
     1 package day02;
     2 
     3 public class JoinMethod extends Thread {
     4 
     5 
     6     public static void main(String[] args) {
     7 
     8         for (int i = 1; i <= 10; i++) {
     9 
    10             if (i == 5) {
    11 
    12                 try {
    13 
    14                     JoinMethod t1 = new JoinMethod("JoinedMethod main Thread:");
    15 
    16                     t1.start();
    17 
    18                     t1.join();
    19  
    20 
    21                 } catch (InterruptedException e) {
    22 
    23                     e.printStackTrace();
    24 
    25 
    26                 }
    27 
    28             }
    29 
    30             System.out.println(Thread.currentThread().getName() + ":" + i);
    31 
    32         }
    33 
    34     }
    35 
    36 
    37     @Override
    38 
    39     public void run() {
    40 
    41         for (int i = 1; i <= 5; i++) {
    42 
    43             System.out.println(getName() + ":	" + i);
    44 
    45 
    46         }
    47 
    48     }
    49 
    50 
    51     public JoinMethod(String name) {
    52 
    53         super(name);
    54 
    55  
    56 
    57     }
    58 
    59 }

    运行结果:

    可以看出main主线程等待joined thread线程先执行完了才结束的。如果把t1.join()这行注释掉,运行结果如下:

     

    6、getName()和setName() 

    用来得到或者设置线程名称。

    7、getPriority()和setPriority() 

    用来获取和设置线程优先级。

    8、setDaemon()和isDaemon() 

    用来设置线程是否成为守护线程和判断线程是否是守护线程。

    欢迎批评指正,提出问题,谢谢!
  • 相关阅读:
    Java Socket通信读取相关信息代码
    Java Socket编程如何建立两者关系
    浅谈JAVA中如何利用socket进行网络编程(二)
    浅谈JAVA中如何利用socket进行网络编程(一)
    【Java TCP/IP Socket】TCP Socket(含代码)
    HTTP协议
    HTTP协议详解
    TCP/IP协议与Http协议的区别
    MultipartResolver实现文件上传功能
    ***CodeIgnite/CI 去掉 index.php的 配置
  • 原文地址:https://www.cnblogs.com/xxeleanor/p/15231716.html
Copyright © 2011-2022 走看看