首页 > 代码库 > 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 }
效果图:
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。