码迷,mamicode.com
首页 > 编程语言 > 详细

详解~实现Runnable方法创建线程之为什么要将Runnable接口的子类对象传递给Thread的构造函数

时间:2016-04-20 00:20:02      阅读:1337      评论:0      收藏:0      [点我收藏+]

标签:

/**
 * @author zhao
 * @TIME 0419 22:56  End
 *定义线程的第二种方法:实现Runnable接口
 *步骤:1,定义一个子类实现Runnable接口
 *    2,在子类中覆盖run()方法,并且将多线程锁执行的代码写入run方法中
 *    3,通过Thread类建立线程对象;
 *    4,将Runnable接口的子类对象作为实际参数传递给Thread类的构造函数。
  为什么要将Runnable接口的子类对象传递给Thread的构造函数。
  因为,自定义的run方法所属的对象是Runnable接口的子类对象。
  所以要让线程去指定指定对象的run方法。就必须明确该run方法所属对象。
顿悟 (结合今天刚看的入门问题:
 1,在Test项目中java.Iduction.test中,String s ="Hello world";String string =s;
 注意:s不是一个对象,而是一个String类型的引用,指向对象
 同理:为什么要将Runnable接口的子类对象传递给Thread的构造函数。
 
 */
//举例:定义一个卖票程序
package ThreadDemoOne;
class Ticket implements Runnable //实现接口,注意英语单词
{
 private int tick =100;//定义票数为100张
 public void run()
 {
  while(true)//true true true 写错过两遍了。while(True)就是执行循环。
  {
   if(tick>0)
   {
    System.out.println("售票员编号"+Thread.currentThread().getName()+"这是第"+tick+"张票");
    tick--;
   }
  }
 }
}
public class ThreadDemo4
{
 public static void main(String[] args )
 {
  Ticket t=new Ticket();//声明一个Ticket类型的对象的“引用”,这个引用指向Ticket对象
  Thread t1=new Thread(t);//创建一个线程,声明一个Thread类型的t1变量,t1变量又指向了t所指向的变量。
  Thread t2=new Thread(t);
  Thread t3=new Thread(t);
  Thread t4=new Thread(t);
  /*new Thread(t)中的t不是一个对象,而是一个声明为Ticket类型的变量,t指向这个对象
   * 而将t1~t4指向t,t又是指向run方法中的对象,即线程t1~t4指向ticket对象
   * 如果不指向对象,线程将不知道执行哪个run方法。
   */
  //t1.run();犯错误了,注意不能是run方法,应该是start方法
  t1.start();
  t2.start();
  t3.start();
  t4.start();

  
  
 }
}

详解~实现Runnable方法创建线程之为什么要将Runnable接口的子类对象传递给Thread的构造函数

标签:

原文地址:http://www.cnblogs.com/ruoniao/p/5410670.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!