ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

线程的对象方法

2021-09-05 23:02:43  阅读:166  来源: 互联网

标签:run Thread 对象 线程 thread1 方法 public


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() + ":\t" + 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() 

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

标签:run,Thread,对象,线程,thread1,方法,public
来源: https://www.cnblogs.com/xxeleanor/p/15231716.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有