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 }
Java中Thread的常用方法
猜你喜欢
转载自www.cnblogs.com/zuiaimiusi/p/10833447.html
今日推荐
周排行