启动:使用静态代理设计模式

优点:可同时实现继承,避免单继承局限性

一般方式:

Programer.java
/**
* 真实角色
*
* @author :liuqi
* @date :2018-06-12 17:39.
*/
public class Programer implements Runnable {
@Override
public void run() {
for (int i = 0; i < 5; i++) {
System.out.println("一边coding: ");
}
}
}
测试类
Demo03.java
/**
* 测试类:一般方式之实现runnable接口创建线程
*
* @author :liuqi
* @date :2018-06-12 17:44.
*/
public class Demo03 {
public static void main(String[] args) {
// 创建真实角色
Programer pro = new Programer();
// 创建代理角色+真实角色引用
Thread proxy = new Thread(pro);
// 调用start方法启动线程
proxy.start();
for (int i = 0; i < 7; i++) {
System.out.println("一边聊QQ");
}
}
}

运行结果:

一边聊QQ
一边聊QQ
一边聊QQ
一边聊QQ
一边聊QQ
一边聊QQ
一边聊QQ
一边coding:
一边coding:
一边coding:
一边coding:
一边coding:

匿名内部类方式:

ThreadDemo.java
/**
* 使用匿名内部类的方式创建线程
*
* @author :liuqi
* @date :2018-06-12 15:02.
*/
public class ThreadDemo {
// 继承thread类实现多线程
public static void main(String[] args) {
/*new Thread() {
@Override
public void run() {
for (int x = 0; x < 5; x++) {
*//*System.out.println(Thread.currentThread().getName() + "--"
+ x);*//*
System.out.println("rabit run " + "--"
+ x);
}
}
}.start();
;
new Thread() {
@Override
public void run() {
for (int x = 0; x < 5; x++) {
*//*System.out.println(Thread.currentThread().getName() + "--"
+ x);*//*
System.out.println("tortoise run " + "--"
+ x);
}
}
}.start();
;*/
// 实现runnable接口,创建多线程并启动
new Thread(new Runnable() {
@Override
public void run() {
for (int x = 0; x < 5; x++) {
System.out.println(Thread.currentThread().getName() + "--"
+ x);
}
}
}) {
}.start();
}
}

运行结果:

Thread-0--0
Thread-0--1
Thread-0--2
Thread-0--3
Thread-0--4

参考:https://www.cnblogs.com/fuck1/p/5373700.html

代码地址:https://github.com/yuki9467/TST-javademo/tree/master/src/main/thread

创建线程的一般方式和匿名内部类方式对比——实现runnable接口,重新run方法的更多相关文章

  1. Java线程演示样例 - 继承Thread类和实现Runnable接口

    进程(Process)和线程(Thread)是程序执行的两个基本单元. Java并发编程很多其它的是和线程相关. 进程 进程是一个独立的执行单元,可将其视为一个程序或应用.然而,一个程序内部同事还包括 ...

  2. 创建线程的一般方式和匿名内部类方式对比——继承thread类,重写run()方法

    第一种:继承thread类,重写run()方法 一般方式:Demo01.java /** * 创建线程的第一种方式:继承thread类,重写run()方法 * * @author :liuqi * @ ...

  3. 创建线程(Background Thread)的N种方式

    第一.Thread类 Thread类是实例化线程的主要方法:一个Thread实例管理一个线程,即执行序列.通过简单实例化一个对象,就可以创建一个线程,然后通过Thread对象提供的方法对线程进行管理. ...

  4. Java实现线程的两种方式?Thread类实现了Runnable接口吗?

    Thread类实现了Runnable接口吗? 我们看看源码中对与Thread类的部分声明 public class Thread implements Runnable { /* Make sure ...

  5. java线程基础巩固---采用多线程方式模拟银行排队叫号以及Runnable接口存在的必要性

    采用多线程模拟银行排队叫号: 关于银行拿排队号去叫号的过程我想不必过多解释了,就是有几个业务窗口,并行的处理业务,每处里完一个人,则会叫下一个排队的号去处理业务,一个人是不会被多个窗口工作人员叫号的, ...

  6. 死磕 java线程系列之创建线程的8种方式

    (手机横屏看源码更方便) 问题 (1)创建线程有哪几种方式? (2)它们分别有什么运用场景? 简介 创建线程,是多线程编程中最基本的操作,彤哥总结了一下,大概有8种创建线程的方式,你知道吗? 继承Th ...

  7. Java中创建线程的两种方式

    创建线程的第一种方式: 创建一个类继承Thread 重写Thread中的run方法 (创建线程是为了执行任务 任务代码必须有存储位置,run方法就是任务代码的存储位置.) 创建子类对象,其实就是在创建 ...

  8. Java创建线程的三种主要方式

    Java创建线程的主要方式 一.继承Thread类创建 通过继承Thread并且重写其run(),run方法中即线程执行任务.创建后的子类通过调用 start() 方法即可执行线程方法. 通过继承Th ...

  9. Java 创建线程的方式

    想必大家在Java面试中经常会被问到有关线程的问题,最常见的莫过于“Java有哪几种创建线程的方式呢?” 稍稍了解过,或者在日常开发中也都会用到以下几种方式: ①继承Thread类(真正意义上的线程类 ...

随机推荐

  1. LinkedHashMap源码分析及实现LRU

    概述 从名字上看LinkedHashMap相比于HashMap,显然多了链表的实现.从功能上看,LinkedHashMap有序,HashMap无序.这里的顺序指的是添加顺序或者访问顺序. 基本使用 @ ...

  2. Spring Boot 2.x以后static下面的静态资源被拦截

    今天创建一个新的Spring Boot项目,没注意到spring boot的版本,发现静态资源无法访问.百度一下发现好像是Spring Boot 2.0版本以后static目录不能直接访问. 接下来直 ...

  3. 一秒钟带你走进P图世界-----(python)PIL库的使用

    python-----PIL库的使用 一.什么是PIL库 1.PIL(Python Image Library)库是python语言的第三方库,具有强大的图像处理能力,不仅包含了丰富的像素.色彩操作功 ...

  4. sleep、wait、notify、notifyAll的区别

    Sleep 和wait 1. sleep是Thread类的静态方法,wait是Object类中定义的方法2. Thread.sleep不会导致锁行为的改变,如果当前线程是拥有锁的,那么Thread.s ...

  5. pycharm+selenium搭建环境

    1.在你的python安装目录D:\Python36\Scripts下执行pip install selenium 2.安装完成后最好直接打开python,在下面输入from selenium imp ...

  6. 项目Alpha冲刺——代码规范、任务及计划

    代码规范 JS规范 JS规范在线预览 PHP规范 PHP规范在线预览 Unity C#脚本规范 C#规范下载 任务计划 图表 计划进度燃尽表 网站部分任务计划 任务 时间 内容 第一天 4.24 阅读 ...

  7. 理解 Linux 的硬链接与软链接【转】

    转自:https://www.ibm.com/developerworks/cn/linux/l-cn-hardandsymb-links/index.html 从 inode 了解 Linux 文件 ...

  8. Shell中字符串的切割、拼接、比较、替换

    [截取] 一.Linux shell 截取字符变量的前8位,有方法如下: expr substr “$a” 1 8 : 二.按指定的字符串截取 第一种方法: ${varible##*string} # ...

  9. 013_UDP专项研究监控

    数据源: /proc/net/snmp; 采集方式:累计值,每10秒采集一次取差值: 指标:net.snmp.udp (key: system); Out Datagrams: udp层发送的数据包总 ...

  10. git 命令笔记

    切换 git 远程仓库HEAD分支 $ git remote set-head origin some_branch