验证后台线程的java多线程技术

       在学习编程的过程中,我觉得不止要获得课本的知识,更多的是通过学习技术知识提高解决问题的能力,这样我们才能走在最前方,更多Java学习,请搜索疯狂Java;

  这个程序验证了后台线程与用户线程的区别以及之间的关系,证明了只要所有的用户线程结束了,那么后台线程就将必须结束!

  importjava.util.concurrent.TimeUnit;

  public classTest {

  publicstatic void main(String[] args){

  //将主线程的优先级设为最低,优先执行main线程创建的线程

  Thread.currentThread().setPriority(Thread.MIN_PRIORITY);

  ThreadmyThread=new Thread(new Runnable(){

  public voidrun(){

  while(true)

  {

  System.out.println("iwill wait for you in shangling");

  try {

  TimeUnit.MILLISECONDS.sleep(100);

  } catch(InterruptedException e) {

  e.printStackTrace();

  }

  }

  }

  });

  myThread.setDaemon(true);//设置后台线程一定要写在start()方法的前面,要不然是无效

  的

  myThread.setPriority(Thread.MAX_PRIORITY);

  myThread.start();

  ThreaduserThread = new Thread(new Runnable(){

  public voidrun(){

  for(inti=0;i<5;i++)

  System.out.println("thisis a user Thread");

  }

  });

  userThread.setPriority(Thread.MAX_PRIORITY);

  userThread.start();

  System.out.println("themain thread is end" );

  }

  }

  在上面的程序中就能体会到,当用户线程都结束时,虽然后台线程(幽灵线程)是一个死循环,但是只要所有的用户线程都结束了,那么系统就会自动停止。要让后台线程执行得久一点,只有一个方法,那就是延长用户线程的运行时间,例如在main()方法中添加sleep()方法进行延时。

  这里要注意一点,不要利用sleep方法来精确计时,由于这种方法是依赖操作系统的,所以它的计时准确性是非常不可靠的,当休眠时间过长时可能会产生意想不到的事情发生!

  疯狂Java培训的课程采用针对性培养,全面提升学员就业能力,重点加强训练职业素质。老师辛勤的讲解,让学员充分感受Java的魅力,充分激发每个学员对于编程的热爱,让学员在半年的时间内掌握8-10万的代码量,成为真正的技术高手,疯狂Java采用企业全真模拟开发训练,迅速积累项目经验。让学员迅速获得其他人需要花费两年才能获得的工作技能,无忧就业!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值