首页 > 代码库 > java多线程的常用方法(以及注意事项)

java多线程的常用方法(以及注意事项)

1 /*2  *           线程的常用方法3  *           1.start();4  *           2.run();5  *           3.sleep(int millsecond);  6  *           4.isAlive();       -->判断线程是否还在运行7  *           5.currentThread(); -->返回当前正在使用CPU资源的线程8  *           6.interrupt();     -->激活休眠的线程9  * */

但是需要注意的一个小点是:

1 /*2  *   需要注意到地方:一个已经运行的线程在没有进入死亡状态时,3  *   不要在给线程分配实体,由于线程只能引用最后分配的实体,4  *   先前的实体就会成为“垃圾”,并且不会被垃圾收集器收集掉5  * */

            

 

     

 

      

  如果在执行一行这样的代码:

   Thread = new Thread(Target);

       会产生这样的一个效果,如图:

     便会又开始建立一个线程,这样Thread原先的线程就会变成垃圾实体。而且更重要的是垃圾集收器不会去处理它,

因为JVM(java virtual Machine(java虚拟机))会认为原先的那个实体正在运行状态,如果突然释放掉内存,可能

会引起错误甚至设备的毁坏   。

如果在一个开启线程的情况下,有重新开启线程会怎么样勒?

代码:

 1 import java.text.SimpleDateFormat; 2 import java.util.Date; 3  4 public class Example12_5 { 5     public static void main(String args []) 6     { 7       Home home = new Home(); 8       Thread showTime = new Thread(home); 9       showTime.start();10     }11 }12 13 class Home implements Runnable14 {15         int time=0;16        SimpleDateFormat m = new SimpleDateFormat("hh:mm:ss");17        Date date;18     public void run() {19         // TODO Auto-generated method stub20         while(time<10)21         {22             date = new Date();23             System.out.println(m.format(date));24             time++;25           try {26                  Thread.sleep(1000);27         } catch (InterruptedException e) {28             // TODO Auto-generated catch block29                e.printStackTrace();30         }31            if(time==3)32            {33              Thread thread=Thread.currentThread();34              thread = new Thread(this);35              thread.start();36            }    37         }38     }    39 }

效果图: