1 package com.bytezero.threadexer;
2
3 /**
4 *
5 * 创建多线程的方式二:实现 Runnable接口
6 * 1.创建一个实现了Runnable接口类
7 * 2.实现类去实现Runnable中的抽象方法:run()
8 * 3.创建实现类的对象
9 * 4.将此对象作为参数传递到Thread类的构造器中,创建Thread类的对象
10 * 5.通过Thread类的对象调用start()
11 *
12 * 比较创建线程的两种方式:
13 * 开发中 优先选择实现Runnable接口的方式
14 * 原因:1.实现的方式没有类的单继承的局限性
15 * 2.实现的方式更适合来处理多个线程有共享数据的情况
16 *
17 * 联系:public class Thread implements Runnable
18 * 相同点:两种方式都需要重写 run(),将线程要执行的逻辑声明在run()中
19 *
20 *
21 *
22 * @author Bytezero1·zhenglei! Email:420498246@qq.com
23 * create 2021-10-15 17:21
24 */
25
26 //1.创建一个实现了Runnable接口类
27 class MThread implements Runnable {
28 //2.实现类去实现Runnable中的抽象方法:run()
29
30 @Override
31 public void run() {
32 for (int i = 0; i < 100; i++) {
33 if( i % 2==0){
34 System.out.println(Thread.currentThread().getName()+":"+i);
35 }
36 }
37 }
38 }
39
40 public class RunnableTest {
41 public static void main(String[] args) {
42 //3.创建实现类的对象
43 MThread mThread = new MThread();
44
45 // 4.将此对象作为参数传递到Thread类的构造器中,创建Thread类的对象
46 Thread t1 = new Thread(mThread);
47
48
49 // * 5.通过Thread类的对象调用start():①启动线程 ②调用当前线程的run()-->调用了 R
50 //Runnable类型的target的run()
51 t1.setName("线程一");
52 t1.start();
53
54 //再启动线程1遍历100以内的偶数
55 Thread t2 = new Thread(mThread);
56 t2.setName("线程二");
57 t2.start();
58 }
59 }

...............

Java 多线程------创建多线程的方式二:实现 Runnable接口 + 比较创建线程的两种方式:的更多相关文章

  1. Java之多线程方式二(实现Runnable接口)

    /** * 创建多线程的方式二:实现Runnable接口 * 1. 创建一个实现了Runnable接口的类 * 2. 实现类去实现Runnable中的抽象方法:run() * 3. 创建实现类的对象 ...

  2. 1.java多线程_实现线程的两种方式

    1.java多线程基本知识 1.1.进程介绍 不管是我们开发的应用程序,还是我们运行的其他的应用程序,都需要先把程序安装在本地的硬盘上.然后找到这个程序的启动文件, 启动程序的时候,其实是电脑把当前的 ...

  3. 【java并发】传统线程技术中创建线程的两种方式

    传统的线程技术中有两种创建线程的方式:一是继承Thread类,并重写run()方法:二是实现Runnable接口,覆盖接口中的run()方法,并把Runnable接口的实现扔给Thread.这两种方式 ...

  4. Java并发基础01. 传统线程技术中创建线程的两种方式

    传统的线程技术中有两种创建线程的方式:一是继承Thread类,并重写run()方法:二是实现Runnable接口,覆盖接口中的run()方法,并把Runnable接口的实现扔给Thread.这两种方式 ...

  5. python 并发编程 多线程 开启线程的两种方式

    一 threading模块介绍 multiprocess模块的完全模仿了threading模块的接口,二者在使用层面,有很大的相似性 二 开启线程的两种方式 第一种 每造一个进程,默认有一个线程,就是 ...

  6. 创建线程的两种方式比较Thread VS Runnable

    1.首先来说说创建线程的两种方式 一种方式是继承Thread类,并重写run()方法 public class MyThread extends Thread{ @Override public vo ...

  7. 网络编程:多进程实现TCP服务端并发、互斥锁代码实操、线程理论、创建线程的两种方式、线程的诸多特性、GIL全局解释器锁、验证GIL的存在

    目录 多进程实现TCP服务端并发 互斥锁代码实操 线程理论 创建线程的两种方式 线程的诸多特性 GIL全局解释器锁 验证GIL的存在 GIL与普通互斥锁 python多线程是否有用 死锁现象 多进程实 ...

  8. Java新建线程的两种方式

    Java新建线程有两种方式,一种是通过继承Thread类,一种是实现Runnable接口,下面是新建线程的两种方式. 我们假设有个竞赛,有一个选手A做俯卧撑,一个选手B做仰卧起坐.分别为两个线程: p ...

  9. Python创建进程、线程的两种方式

    代码创建进程和线程的两种方式 """ 定心丸:Python创建进程和线程的方式基本都是一致的,包括其中的调用方法等,学会一个 另一个自然也就会了. "" ...

  10. Python 35 线程(1)线程理论、开启线程的两种方式

    一:线程理论 1 什么是线程 进程其实一个资源单位,而进程内的线程才是cpu上的执行单位 线程其实指的就是代码的执行过程2 为何要用线程   线程vs进程     1. 同一进程下的多个线程共享该进程 ...

随机推荐

  1. 通杀无限 debugger,目前只有 1% 的人知道!

    前言 相信很多小伙伴在进行 web 逆向的时候,都遇到过无限 debugger.最简单的方法,在 debugger 位置,点击行号,右键 Never pause here,永远不在此处断下即可.但是这 ...

  2. JS ----- JS实用小功能

    1.复制页面上文字功能 function copyIdCode() { var idcode = document.getElementById("personIdcodeCopy" ...

  3. go 1.21:cmp

    标准库 cmp 原文在这里 go 1.21 新增 cmp 包提供了与有序变脸比较相关的类型和函数. Ordered 定义如下: type Ordered interface { ~int | ~int ...

  4. c++基础之函数

    距离上次更新又过了一周,又该更新新的读书笔记了.本次更新的主要是c++中函数部分的内容 c++ 中的函数与c语言中的函数大致用法或者语法是一样的,这里就不就这点详细展开了.需要注意的是c/c++中并没 ...

  5. Win32汇编:仿写多态与虚函数

    多态性是面向对象的重要组成部分,利用多态可以设计和实现易于扩展的程序,所谓多态就是一个类函数有多重形态,具有不同功能的函数可以用同一个函数名,实现使用一个函数名调用不同内容的函数,从而返回不同的结果, ...

  6. jetbrains 系列 terminal history 设置

    之前的版本中 jetbrains 的 terminal 使用的是 ~/.zsh_history, 改版后使用的不是一个 history, 就会出现在 iterm2 中使用的 command, 在 py ...

  7. pymysql基本使用规则

    1.执行SQL #!/usr/bin/env python # -*- coding:utf-8 -*- import pymysql # 创建连接 conn = pymysql.connect(ho ...

  8. 基于队列实现生产者消费者(Python)

    # 进城之间数据隔离 # 进程之间通信(IPC) Inter Process communication # 基于文件 :同一台机器上的多个进程之间通信 # Queue 队列 # 基于socket的文 ...

  9. Visual Studio 2017高级编程(第7版)中文版

    发布一个Visual Studio 2017的编程书籍: 链接:https://pan.baidu.com/s/1-RL9wkNYXwvQOdWrnAsSZQ 提取码:ig0c

  10. QQ音乐转 mp3 格式的链接,不需要下载任何软件

    一.打开QQ音乐的官网 QQ音乐-千万正版音乐海量无损曲库新歌热歌天天畅听的高品质音乐平台! 二.随便找一首歌播放 三.打开后,就可以使用了