利用《倚天屠龙记》中光明顶之战来完成线程的创建及线程的基本操作

  • GuangMingDing.java:舞台线程
  • HeroThread.java:六大门派线程
  • SchoolRunnable.java:英雄线程(就是张无忌啦)

Runnable和Thread

@FunctionalInterface
public interface RunnableRunnable接口应由任何类实现,其实例将由线程执行。 该类必须定义一个无参数的方法,称为run 。
该接口旨在为希望在活动时执行代码的对象提供一个通用协议。 例如, Runnable由Thread类Thread 。 活跃的只是意味着一个线程已经启动,还没有被停止。

另外, Runnable提供了一个类被激活而不是Thread Thread类化的Thread 。 一个实现类Runnable可以在不继承运行Thread实例化一个Thread实例,并在传递本身作为目标。 在大多数情况下, Runnable接口应使用,如果你只打算重写run()方法并没有其他Thread方法。 这是重要的,因为类不应该被子类化,除非程序员打算修改或增强类的基本行为。

//门派线程
//模拟作战双方的行为
public class SchoolRunnable implements Runnable {//volatile保证了线程可以正确的读取其他线程写入的值//可见性 ref JMM, happens-before原则volatile boolean keepRunning = true;@Overridepublic void run() {while(keepRunning){//发动5连击for(int i=0;i<5;i++){System.out.println(Thread.currentThread().getName()+"进攻对方["+i+"]");//让出了处理器时间,下次该谁进攻还不一定呢!Thread.yield();}}System.out.println(Thread.currentThread().getName()+"结束了战斗!");}
//英雄线程
public class HeroThread extends Thread {public void run(){System.out.println(Thread.currentThread().getName()+"开始了战斗!");for(int i=0;i<10;i++){System.out.println(Thread.currentThread().getName()+"打败六大门派。。。");}System.out.println(Thread.currentThread().getName()+"结束了战斗!");}
}
//舞台(光明顶)线程
/*** 光明顶激战大戏*/
public class GuangMingDing extends Thread {public void run(){System.out.println("光明顶之战马上开始");//让观众们安静片刻,等待大戏上演try {Thread.sleep(5000);} catch (InterruptedException e1) {e1.printStackTrace();}System.out.println("大幕徐徐拉开");try {Thread.sleep(5000);} catch (InterruptedException e1) {e1.printStackTrace();}System.out.println("六大门派围攻光明顶...");SchoolRunnable MingSchool = new SchoolRunnable();SchoolRunnable SixSchool= new SchoolRunnable();//使用Runnable接口创建线程Thread  MingSchoolThread = new Thread(MingSchool,"明教");Thread  SixSchoolThread= new Thread(SixSchool,"六大门派");//启动线程,让武林人士开始作战MingSchoolThread.start();SixSchoolThread.start();//舞台线程休眠,大家专心观看军队厮杀try {Thread.sleep(50);} catch (InterruptedException e) {e.printStackTrace();}System.out.println("正当双方激战正酣,张无忌闪亮登场。。。");Thread  mrZhang = new HeroThread();mrZhang.setName("张无忌");System.out.println("张无忌的理想就是天下太平,跟赵敏比翼双飞!");//停止作战//停止线程的方法MingSchool.keepRunning = false;SixSchool.keepRunning = false;try {Thread.sleep(2000);} catch (InterruptedException e) {e.printStackTrace();}/** 历史大戏留给关键人物*/mrZhang.start();//万众瞩目,所有线程等待程先生完成历史使命try {mrZhang.join();} catch (InterruptedException e) {e.printStackTrace();}System.out.println("光明顶之战结束,张无忌成了教主!");System.out.println("谢谢观看血战光明顶,再见!");}public static void main(String[] args) {new GuangMingDing().start();}
}

输出样例

光明顶之战马上开始
大幕徐徐拉开
六大门派围攻光明顶…
明教进攻对方[0]
明教进攻对方[1]
六大门派进攻对方[0]
六大门派进攻对方[1]
六大门派进攻对方[2]
明教进攻对方[2]
明教进攻对方[3]
明教进攻对方[4]
明教进攻对方[0]
六大门派进攻对方[3]
六大门派进攻对方[4]
明教进攻对方[1]
明教进攻对方[2]
……
……
明教进攻对方[1]
明教进攻对方[2]
明教进攻对方[3]
正当双方激战正酣,张无忌闪亮登场。。。
明教进攻对方[4]
明教进攻对方[0]
明教进攻对方[1]
明教进攻对方[2]
明教进攻对方[3]
明教进攻对方[4]
六大门派进攻对方[1]
明教进攻对方[0]
明教进攻对方[1]
张无忌的理想就是天下太平,跟赵敏比翼双飞!
六大门派进攻对方[2]
六大门派进攻对方[3]
明教进攻对方[2]
六大门派进攻对方[4]
六大门派结束了战斗!
明教进攻对方[3]
明教进攻对方[4]
明教结束了战斗!
张无忌开始了战斗!
张无忌打败六大门派。。。
张无忌打败六大门派。。。
张无忌打败六大门派。。。
张无忌打败六大门派。。。
张无忌打败六大门派。。。
张无忌打败六大门派。。。
张无忌打败六大门派。。。
张无忌打败六大门派。。。
张无忌打败六大门派。。。
张无忌打败六大门派。。。
张无忌结束了战斗!
光明顶之战结束,张无忌成了教主!
谢谢观看血战光明顶,再见!

1.使用Runnable和Thread完成线程创建和基本操作相关推荐

  1. 26_多线程_第26天(Thread、线程创建、线程池)_讲义

    今日内容介绍 1.多线程 2.线程池 01进程概念 A:进程概念 a:进程:进程指正在运行的程序.确切的来说,当一个程序进入内存运行, 即变成一个进程,进程是处于运行过程中的程序,并且具有一定独立功能 ...

  2. java线程的创建线程_多线程(Thread、线程创建、线程池)

    第1章 多线程 1.1 多线程介绍 学习多线程之前,我们先要了解几个关于多线程有关的概念. 进程:进程指正在运行的程序.确切的来说,当一个程序进入内存运行,即变成一个进程,进程是处于运行过程中的程序, ...

  3. 26_多线程_第26天(Thread、线程创建、线程池)

    今日内容介绍 1.多线程 2.线程池 01进程概念 A:进程概念 a:进程:进程指正在运行的程序.确切的来说,当一个程序进入内存运行, 即变成一个进程,进程是处于运行过程中的程序,并且具有一定独立功能 ...

  4. 线程创建方式的三种方式

    三种线程创建方式 继承 Thread 类重写 run 方法 实现Runnable接口的run方法 使用Callable和Future创建线程 继承 Thread 类重写 run 方法 线程创建方式 创 ...

  5. C++多线程并发(一)--- 线程创建与管理

    文章目录 前言 一.何为并发 1.1 并发与并行 1.2 硬件并发与任务切换 1.3 多线程并发与多进程并发 二.如何使用并发 2.1 为什么使用并发 2.2 在C++中使用并发和多线程 三.C++线 ...

  6. Java 线程——创建和运行线程|| lambda表达式就是一个匿名内部类||Thread 与 Runnable 的关系||FutureTask 配合 Thread

    创建和运行线程 方法一,直接使用 Thread 方法二,使用 Runnable 配合 Thread

  7. java 继承thread_java线程-创建线程(继承 Thread 类)

    1.创建线程的方式 线程创建方式是:继承 Thread 类,重写 run 方法.如下:public class Task extends Thread{ @Override public void r ...

  8. java线程(Thread)的创建与常用方法

    目录 Process与Thread 线程的创建 继承Thread 2. 实现Runnable 3. 实现Callable 通过线程下载图片的例子 实现Runnable接口 抢票的例子: 龟兔赛跑: 实 ...

  9. java thread类是抽象类_Java继承抽象类Thread,实现接口Runnable,倒计时,线程休眠,静态变量【诗书画唱】...

    使用继承抽象类Thread方式创建一个线程,打印1到100之间的奇数设置其名称为线程1 package thread; public class ji { public static void mai ...

最新文章

  1. Forrester:2011年Q2数据库审计与实时保护市场分析报告【更新】
  2. java继承对象转换_java中类与对象的继承重写,存储以及自动转换和强制转换。...
  3. 在计算机中dos代表什么意思,Boot是什么意思
  4. (组合数学笔记)Pólya计数理论_Part.2_群及其性质
  5. 第二十二章:面向对象(2)
  6. DT大数据梦工厂 第55,56讲
  7. SpanBERT: 抽取式问答的利器
  8. c语言 游程编码,游程编码C语言.doc
  9. 用Java实现两个Excel表格中数据的对比
  10. 简单图形验证码的识别
  11. 怎么把ppt弄成链接的形式_如何将ppt转换成html网页格式
  12. leetcode刷题方法
  13. 浏览器前进后退静默刷新页面
  14. 微信公共号分享链接配置
  15. pes时处理PTS和DTS的方法
  16. 如何用VBA快速批量提取多个工作表名称?
  17. 求导: H61 集成主板 装10.15超级黑苹果
  18. 使用 FFmpeg 推流,使用 VLC 软件进行拉流
  19. 硬盘录像机协议与技术汇总
  20. 卡巴斯基U盘插入扫描策略

热门文章

  1. 无线连接服务器678,为何我无线网络能连接,有线网络显示678
  2. linux中recvfrom读取速度,Linux系统调用-- recv/recvfrom 函数详解
  3. 电力两票B/S图形系统的开发
  4. 美食杰项目 -- 总结(八)
  5. Python 豌豆荚 APP版本检测脚本
  6. 【智能物流】罗戈研究院京东物流《数字化供应链综合研究报告》;AI智慧仓储和物流能为传统制造企业做这4件事
  7. OracleXE(11g快捷版)卸载
  8. 一张图让你学会Python
  9. BUUCTF 秘密文件
  10. 自动在图片上添加页码