1 package multithread2;
2
3 /*
4 * 创建线程的第一种方法:继承Thread类
5 *
6 * 创建线程的第二种方式:实现Runnable接口
7 *
8 * 1,定义类实现Runnable接口。
9 * 2,覆盖接口中的run方法,将线程的任务代码封装到run方法中。
10 * 3,通过Thread类创建线程对象,并将Runnable接口的子类对象作为Thread类的构造函数的参数进行传递。
11 * 为什么?因为线程的任务都封装在Runnable接口子类对象的run方法中。
12 * 所以要在线程对象创建时就必须明确要运行的任务。
13 * 4,调用线程对象的start方法开启线程
14 *
15 *
16 * Runnable出现仅仅是将线程的任务进行对象的封装
17 *
18 * 实现Runnable接口的好处:
19 * 1,将线程的任务从线程的子类中分离出来,进行了单独的封装。
20 * 按照面向对象的思想将任务的封装成对象。
21 * 2,避免了java单继承的局限性。
22 *
23 * 所以,创建线程的第二种方式较为常用
24 *
25 */
26
27
28 class Demo implements Runnable {//extends Fu {//如果自己本身有父类怎么解决实现run方法呢?准备扩展Demo类的功能,让其中的内容可以作为线程的任务
29 //通过接口的形式完成
30
31 public void run() {
32 show();
33 }
34 public void show() {
35 for (int x = 0; x < 20; x++) {
36 System.out.println(Thread.currentThread().getName()+"...."+x);
37 }
38 }
39 }
40 public class ThreadDemo {
41
42 public static void main(String[] args) {
43 // TODO Auto-generated method stub
44 Demo d = new Demo();
45 Thread t1 = new Thread(d);
46 Thread t2 = new Thread(d);
47 t1.start();
48 t2.start();
49 // Demo d1 = new Demo();
50 // Demo d2 = new Demo();
51 // d1.start();
52 // d2.start();
53 }
54
55 }
56
57
58 class Thread{
59 private Runnable r;
60 Thread(){
61
62 }
63 Thread(Runnable r){
64 this.r = r;
65 }
66 public void run() {
67 if (r!=null) {
68 r.run();
69 }
70
71 }
72 public void start() {
73 run();
74 }
75 }
76
77
78 class ThreadImpl implements Runnable{
79 public void run() {
80 System.out.println("runnable run");
81 }
82
83 }
84 ThreadImpl i = new ThreadImpl();
85 Thread t = new Thread(i);
86 t.start();
87
88 /*
89 class SubThread extends Thread{
90 public void run() {
91 System.out.println("haha");
92 }
93 }
94 SubThread s = new SubThread();
95 s.start();
96 */

ThreadDemo

多线程-创建线程第二种方式-实现Runnable接口-细节和好处的更多相关文章

  1. Thread类的常用方法_sleep和创建多线程程序的第二种方式实现Runnable接口

    public static void sleep(long millis);//使当前正在执行的线程以指定的毫秒数暂停(暂时停止执行). 毫秒数结束后线程继续执行 package com.yang.T ...

  2. 创建线程的第二种方式------实现Runnable接口的方式

    package cn.itcast.demo16.Demo07.Runnable;/** * @author newcityman * @date 2019/7/22 - 23:17 */public ...

  3. java多线程 -- 创建线程的第三者方式 实现Callable接口

    Java 5.0 在 java.util.concurrent 提供了一个新的创建执行线程的方式:Callable 接口Callable 接口类似于 Runnable,两者都是为那些其实例可能被另一个 ...

  4. Thread类的常用方法_sleep和创建多线程程序的第二种方式_实现Runnable接口

    sleep方法是在Thread类中的一个静态方法,当一个线程调用了sleep方法,被调用的那个线程就会暂时的让出指定时间的CPU执行权,在这段时间也不会参与CPU的调度,当时间到了之后,就会重新回到就 ...

  5. java基础知识回顾之java Thread类--java线程实现常见的两种方式实现Runnable接口(二)

    创建线程的第二中方式: /** *      步骤: 1定义类实现Runnable接口      2.实现Runnable接口中的run方法.      3.通过Thread类建立线程对象,并将Run ...

  6. 50、多线程创建的三种方式之实现Runnable接口

    实现Runnable接口创建线程 使用Runnable创建线程步骤: package com.sutaoyu.Thread; //1.自定义一个类实现java.lang包下的Runnable接口 cl ...

  7. 如何创建线程第二种实现Runnable接口

    package TestException; public class test5 { public static void main(String[] args) { Test6 s1 = new ...

  8. 51、多线程创建的三种方式之实现Callable接口

    实现Callable接口创建线程 Callable接口是在jdk5版本中加入的,这个接口在java.util.concurrent包下面,与其他两种方式不同的地方在于使用Callable接口创建的线程 ...

  9. Java创建线程四种方式

    1.继承Thread类 public class MyThread extends Thread { public MyThread() { } public void run() { for(int ...

随机推荐

  1. docker启动WARNING:IPv4 forwarding is disabled. Networking will not work.

    docker启动容器报错IPv4 forwarding is disabled. Networking will not work. [root@localhost ~]# docker run -p ...

  2. 【LeetCode】336. Palindrome Pairs 解题报告(Python)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 HashTable 相似题目 参考资料 日期 题目地 ...

  3. 【LeetCode】849. Maximize Distance to Closest Person 解题报告(Python)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 日期 题目地址:https://leetcode.c ...

  4. Rectangles(hdu2461)

    Rectangles Time Limit: 5000/4000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total ...

  5. Buy Tickets(poj2828)

    Buy Tickets Time Limit: 4000MS   Memory Limit: 65536K Total Submissions: 17416   Accepted: 8646 Desc ...

  6. sql注入 —sqli-labs/Less-5 逻辑注入

    逻辑注入: 1.尝试查询数据库: (1)判断数据长度 -- 构造逻辑判断:and length(database())=8 当长度等于"8 "时回显正常,所以数据库长度为" ...

  7. Codeforces 913C:Party Lemonade(贪心)

    C. Party Lemonade A New Year party is not a New Year party without lemonade! As usual, you are expec ...

  8. kafka2.x常用命令笔记(一)创建topic,查看topic列表、分区、副本详情,删除topic,测试topic发送与消费

    接触kafka开发已经两年多,也看过关于kafka的一些书,但一直没有怎么对它做总结,借着最近正好在看<Apache Kafka实战>一书,同时自己又搭建了三台kafka服务器,正好可以做 ...

  9. RTD2172替代方案|TYPEC转HDMI4K@60HZ拓展坞|CS5265替代RTD2172

    瑞昱RTD2172是TYPEC转HDMI4K60HZ音视频数据转换器芯片.CS5265可以替代兼容RTD2172,除了实现同等的转换功能外且整体方案成本和性价比方面比RTD2172要高,且外围器件较少 ...

  10. 中华古诗词知识图谱之实体关系构建&导入neo4j数据库

    实体分析 诗名实体 属性 包含:作诗时间,诗名,内容,翻译,背景. 关系 实体1 关系 实体2 诗名 形式 诗词形式 诗名 作者 诗人 诗名 分类 类别 诗名 词牌名 词牌名 诗名 曲牌名 曲牌名 诗 ...