实现多线程的两种方式:

1.实现Runnable

public interface Runnable {public abstract void run();
}// RunnableTest.java 源码
class MyThread implements Runnable{  private int ticket=10;  public void run(){for(int i=0;i<20;i++){ if(this.ticket>0){System.out.println(Thread.currentThread().getName()+" 卖票:ticket"+this.ticket--);}}}
}; public class RunnableTest {  public static void main(String[] args) {  MyThread mt=new MyThread();// 启动3个线程t1,t2,t3(它们共用一个Runnable对象),这3个线程一共卖10张票!Thread t1=new Thread(mt);Thread t2=new Thread(mt);Thread t3=new Thread(mt);t1.start();t2.start();t3.start();}
}

2.继承Thread

public class Thread implements Runnable {}// ThreadTest.java 源码
class MyThread extends Thread{  private int ticket=10;  public void run(){for(int i=0;i<20;i++){ if(this.ticket>0){System.out.println(this.getName()+" 卖票:ticket"+this.ticket--);}}}
};public class ThreadTest {  public static void main(String[] args) {  // 启动3个线程t1,t2,t3;每个线程各卖10张票!MyThread t1=new MyThread();MyThread t2=new MyThread();MyThread t3=new MyThread();t1.start();t2.start();t3.start();}
}

总结:Thread是一个类,而Runnable是一个接口,因此实现Runnable接口具有天然的扩展性优势,而且Thread有一个构造函数参数是Runnable接口的,可以共享资源。

多线程基础-实现多线程的两种方式(二)相关推荐

  1. SpringBoot中使用AMQ的两种方式二(Java配置、注解方式)

    使用@JmsListener注解方式 1. 工程目录 2. 引入依赖 <?xml version="1.0" encoding="UTF-8"?> ...

  2. python 参数传递的两种方式二 名称传递

    代码如下: def fact(n,m):s=1for i in range(1,n+1):s*=ireturn s//m a=fact(n=10,m=5) print(a) 运行结果:

  3. Java中实现多线程的两种方式之间的区别

    Java提供了线程类Thread来创建多线程的程序.其实,创建线程与创建普通的类的对象的操作是一样的,而线程就是Thread类或其子类的实例对象.每个Thread对象描述了一个单独的线程.要产生一个线 ...

  4. java多线程区别_Java中实现多线程的两种方式之间的区别

    Java提供了线程类Thread来创建多线程的程序.其实,创建线程与创建普通的类的对象的操作是一样的,而线程就是Thread类或其子类的实例对象.每个Thread对象描述了一个单独的线程.要产生一个线 ...

  5. Java实现多线程的两种方式讲解

    1.两种方式 继承Thread和实现Runnable接口       a.Runnable 是一个接口,该接口中只包含了一个run()方法.我们可以定义一个类A实现Runnable接口:然后,通过ne ...

  6. python创建多线程_Python 多线程,threading模块,创建子线程的两种方式示例

    本文实例讲述了Python 多线程,threading模块,创建子线程的两种方式.分享给大家供大家参考,具体如下: GIL(全局解释器锁)是C语言版本的Python解释器中专有的,GIL的存在让多线程 ...

  7. Qt实现多线程编程的两种方式

    Qt实现多线程编程的两种方式 方式一: 继承自QThread类,覆写run函数.此实现方法只有run函数内的代码是运行在子线程内. 代码示例: #ifndef QDEMOTHREAD_H #defin ...

  8. python: 多线程实现的两种方式及让多条命令并发执行

    一 概念介绍 Thread 是threading模块中最重要的类之一,可以使用它来创建线程.有两种方式来创建线程:一种是通过继承Thread类,重写它的run方法:另一种是创建一个threading. ...

  9. python 并发执行命令_python: 多线程实现的两种方式及让多条命令并发执行

    一 概念介绍 Thread 是threading模块中最重要的类之一,可以使用它来创建线程.有两种方式来创建线程:一种是通过继承Thread类,重写它的run方法:另一种是创建一个threading. ...

最新文章

  1. 电脑温度检测软件哪个好_一般电脑录音软件哪个好?
  2. 华为手机怎样复制加密门禁卡_手机NFC复制小区用的门禁卡
  3. 基于Swoole和Redis实现的并发队列处理系统
  4. 使用Aspose.Cells的基础知识整理
  5. java web 模型,从零构建轻量级Java Web框架
  6. C语言在二叉搜索树找到第k个最小元素(附完整源码)
  7. AT1350 深さ優先探索(洛谷 深度优先搜索+记忆化)
  8. shell oracle查询数组,shell 脚本 ---数组
  9. c# datetime._C#| DateTime.Month属性与示例
  10. java zip文件夹_如何使用java压缩文件夹成为zip包
  11. gsensor 车辆碰撞算法_AEB安全模型(一)——基于碰撞时间的安全模型
  12. 看生物信息学如何聚焦特定表型,探索分子机制,促进临床转化
  13. Python3 - 刷博客访问量脚本
  14. algorithm design manual: 8-19
  15. Spring MVC表单实例
  16. 利用kaggle训练模型
  17. 先搞定SLAM,再谈如何抓住下一代互联网产业爆发点!
  18. php ajax mysql视频教学视频_PHP入门教程之AJAX 与 MySQL
  19. 免费的文档翻译教程;免费将很长的文档英文翻译成中文
  20. 从单片机初学者迈向单片机工程师(对初学者非常有用)

热门文章

  1. 外挂学习之路(14)--- 游戏中的二叉树
  2. C++ 类和对象(二):构造函数、析构函数、拷贝构造函数、运算符重载
  3. Python 中的作用域
  4. Flink 还是 Spark?阿里技术专家一语道破真相!
  5. Java 代码精简之道 | 长文
  6. 基于LZ77算法的文件压缩收尾
  7. 广播IP转型报告:2021年广播公司面临的最大挑战
  8. 若只让我推荐一名LiveVideoStackCon上海的讲师,就是他
  9. AAC音频基础知识及码流解析
  10. Hadoop之MapReduce面试知识复习