Java中Thread的常用方法

 1 /*
 2  *Thread常用方法
 3  *1.start():启动当前的线程,调用当前线程的run()
 4  *2.run():通常需要重写Thread类中的此方法,将创建要执行的操作声明在此方法中
 5  *3.currentThread():静态方法,返回代码执行的线程
 6  *4.getName():获取当前线程的名字
 7  *5.setName():设置当前线程的名字
 8  *6.yield():释放当前CPU的执行
 9  *7.join():在线程a中调用线程b的join()方法,此时线程a进入阻塞状态
10  *8.stop():已过时的方法,当执行此方法是,强制结束当前进程
11  *9.sleep(long millitime):让当前进程睡眠指定的毫秒数,在指定时间内,线程是阻塞状态
12  *10.isAlive():判断进程是否存活
13  */
14 class HelloThread extends Thread
15 {
16     public void run()
17     {
18         for(int i=1;i<20;i++)
19         {
20             if((i&1)==0)
21             {/*
22             sleep(),是静态的可以直接通过类调用,会抛异常
23             HelloThread是继承在Thread里的,在Thread里run()没有抛异常(子类重写方法抛出的异常<=父类被重写异常抛出的方法),
24             所以此处不可以throws,只能用try-catch
25             */
26                 try {
27                     sleep(1000);//阻塞1000ms,即1s
28                 } catch (InterruptedException e) {
29                     // TODO Auto-generated catch block
30                     e.printStackTrace();
31                 }
32                 //在1s阻塞后,等CPU分配资源再运行主程序
33                 System.out.println(Thread.currentThread().getName()+":"+i);
34             }
35             if(i%10==0)
36             {
37                 this.yield();
38             }
39         }
40     }
41     /*在源码中可以看到 Thread有对于名字命名的构造器
42      * public Thread(String name) {
43      *    init(null, null, name, 0);
44      * }
45      * 所以子类继承父类的构造器就行
46      */
47     /*
48     public HelloThread(String name)
49     {
50         super(name);
51     }
52     */
53 }
54 public class test{
55     public static void main(String[] args) {
56         //给线程命名方法1 调用setName()
57         HelloThread h1=new HelloThread();
58         HelloThread h2=new HelloThread();
59         h1.setName("*1*");
60         h2.setName("*2*");
61         h1.start();
62         h2.start();
63         //给线程命名方法2 建立类对象,调用构造器
64         /*
65          *HelloThread h2=new HelloTHread("*2*"); 
66          */
67         //给主线程命名
68         Thread.currentThread().setName("主线程");
69         for(int i=0;i<20;i++)
70         {
71             if((i&1)==1)
72             {
73                 System.out.println(Thread.currentThread().getName()+":"+i);
74             }
75             if(i==10)
76             {
77                 try {//主线程中调用h1的join()方法,此时主线程进入阻塞状态
78                     h1.join();//join是Thread中的方法,不是该类中的方法,只能通过继承Thread类的子类对象调用
79                 } catch (InterruptedException e) {
80                     // TODO Auto-generated catch block
81                     e.printStackTrace();
82                 }
83             }
84         }
85     }
86 }

猜你喜欢

转载自www.cnblogs.com/zuiaimiusi/p/10833447.html
今日推荐