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

 /**
* @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(); }
}

文章来源地址https://www.yii666.com/article/756206.html文章地址https://www.yii666.com/article/756206.html网址:yii666.com<网址:yii666.com文章来源地址:https://www.yii666.com/article/756206.html

版权声明:本文内容来源于网络,版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。文本页已经标记具体来源原文地址,请点击原文查看来源网址,站内文章以及资源内容站长不承诺其正确性,如侵犯了您的权益,请联系站长如有侵权请联系站长,将立刻删除

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

  1. C#——找出实现某个接口的所有类 - Hello World - CSDN博客

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

  3. Map接口及其子类

  4. List 接口常用子类及其特点

  5. java中常用的数据结构--Collection接口及其子类

  6. python获取父类的子类(遍历,递归),并循环执行所有子类的某一方法

    前言换了新工作,踏足于python语言的开发,也把自己的学习过程记录下来。一,递归获取某一父类的所有子类这里主要用到了__subclasses__() 这个方法,这个方法返回的是这个类的子类的集合,用递归的方法,去获取传入类型的所有子类。返回给全局变量 all_subclasses这个字典集合

  7. Android -- 获取接口数据的三个方法

    1.   compile \\\'com.loopj.android:android-async-http:1.4.9\\\':2.   compile \\\'org.xutils:xutils:3.2.2\\\':3. 自带的http:运用原生Java Api发送简单的Get请求、Post请求步骤通过统一资源定位器(java.net.URL)获取连接器(java.net.URLConnection)设置请求的参数发送请求以输入流的形式获取返回内容关闭输入流异步

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信图片_20190322181744_03.jpg

微信扫一扫打赏

请作者喝杯咖啡吧~

支付宝扫一扫领取红包,优惠每天领

二维码1

zhifubaohongbao.png

二维码2

zhifubaohongbao2.png