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. Apache Shiro使用官方自带的生成AES密钥

    package test; import org.apache.shiro.codec.Base64; import javax.crypto.KeyGenerator; import javax.c ...

  2. 【九度OJ】题目1163:素数 解题报告

    [九度OJ]题目1163:素数 解题报告 标签(空格分隔): 九度OJ 原题地址:http://ac.jobdu.com/problem.php?pid=1163 题目描述: 输入一个整数n(2< ...

  3. 【LeetCode】188. Best Time to Buy and Sell Stock IV 解题报告(Python)

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

  4. 【LeetCode】39. Combination Sum 解题报告(Python & C++)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 方法一:递归 方法二:回溯法 日期 题目地址:[htt ...

  5. 【LeetCode】481. Magical String 解题报告(Python)

    [LeetCode]481. Magical String 解题报告(Python) 标签(空格分隔): LeetCode 作者: 负雪明烛 id: fuxuemingzhu 个人博客: http:/ ...

  6. World is Exploding(hdu5792)

    World is Exploding Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Other ...

  7. 【云开发】10分钟零基础学会做一个快递查询微信小程序,快速掌握微信小程序开发技能(轮播图、API请求)

    大家好,我叫小秃僧 这次分享的是10分钟零基础学会做一个快递查询微信小程序,快速掌握开发微信小程序技能. 这篇文章偏基础,特别适合还没有开发过微信小程序的童鞋,一些概念和逻辑我会讲细一点,尽可能用图说 ...

  8. JSP中的九大内置对象

    JSP九大内置对象 pageContext 存东西 Request 存东西 Response Session 存东西 Application(servletContext) 存东西 config(se ...

  9. Spring企业级程序设计 • 【目录】

    章节 内容 实践练习 Spring企业级程序设计目录(作业笔记) 第1章 Spring企业级程序设计 • [第1章 Spring之旅] 第2章 Spring企业级程序设计 • [第2章 Spring ...

  10. Java程序设计基础笔记 • 【第7章 Java中的类和对象】

    全部章节   >>>> 本章目录 7.1 理解类和对象 7.1.1 对象 7.1.2 抽象与类 7.1.3 类与对象的关系: 7.2 Java中的类和对象 7.2.1 类的定义 ...