Java线程的概念与原理

发表于:2010-2-01 10:23

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:未知    来源:51Testing软件测试网采编

  ——————————MultiThread.java———————————————————————

  class MultiThread
  {
  public static void main(String[] args)
  {
  MyThread mt=new MyThread();
  //new Thread(mt).start();   //创建多个同样的线程访问同一个变量index,若MyThread采用继承Thread方式,则无法共享同一个变量
  //new Thread(mt).start();
  //new Thread(mt).start();
  //new Thread(mt).start();
  mt.getThread().start(); //也可以采用内部类的方式共享访问同一个变量
  mt.getThread().start();
  mt.getThread().start();
  mt.getThread().start();
  //mt.setDaemon(true);//设定为后台线程,main进程结束时,后台进程也跟着结束
  //mt.setPriority(Thread.MAX_PRIORITY); //设定线程优先级,MAX_PRIORITY为10,MIN_PRIORITY为1,NORM_PRIORITY为5。
  //设定为最高优先级后,程序运行时,mt线程一直运行,强制终止时,main线程才运行
  //设定为最高优先级的线程,无论有无yield();,线程总一直运行,直到强制终止时,main和mt线程交替运行
  //mt.start();
  int index=0;
  while(true) //显示结果与教程不同
  {
  // if(index++==100)
  //   break;
  System.out.println("main:"+Thread.currentThread().getName()); //获取线程名字
  }
  }
  }
  class MyThread //implements Runnable //extends Thread //使用外部类的方式
  //使用内部类完成使用Runnable接口才能完成的两个功能 a,创建多个线程.b,访问同一个变量
  {
  int index=0;
  private class InnerThread extends Thread //不想让外部访问其实现方法,加上private
  {
  public void run()
  {
  while(true)
  {
  System.out.println(Thread.currentThread().getName()+":"+index++);
  }
  }
  }
  Thread getThread()
  {
  return new InnerThread();
  }
  /*
  public void run()
  {
  while(true)
  {
  System.out.println(Thread.currentThread().getName()+":"+index++);
  //yield(); //允许当前线程停止,转去执行其他线程,静态方法
  //mt进程执行时,切换到main进程,main进程执行一段时间后,
  //切换进程到mt,mt执行完获取名字后,返回到main进程
  }
  }
  */
  }
  //一个长时间处于等待状态的线程也有可能被线程调度器调度,从而运行,
  //打破高优先级线程始终获有运行时间的状态
  //如果不需要修改Thread类的除了run方法外的其他方法,选用implements Runnable.

52/5<12345>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号