文档章节

Java中 实现多线程成的三种方式(继承,实现,匿名内部类)

Jusenr
 Jusenr
发布于 2016/05/17 00:23
字数 561
阅读 8
收藏 0
点赞 2
评论 0

------------------------------------------------------------------------------------------------------------    

   

 1  /**  第一种方式:继承Thread类
 2 
 3     *             1. 定义一个类,然后让该类继承Thread类
 4 
 5     *             2. 重写run方法
 6 
 7     *             3. 创建定义的这个类的对象
 8 
 9     *             4. 启动线程
10 
11     */
12 
13  //继承Thread类
14 
15   public class MyThread extends Thread{
16     
17     public MyThread() {}
18 
19     public MyThread(String name) {
20         super(name);
21     }
22 
23     //run方法中封装的应该是要被线程执行的代码 ,run方法中代码的原则,一般存方的都是比较耗时的代码
24     public void run (){
25         
26         for (int i = 0; i < 200; i++) {
27             
28             System.out.println(Thread.currentThread().getName() + "---" + i);
29         }
30     } 
31 }
32 
33   //测试方法
34 
35   private static void Test() {
36 
37    // 创建对象
38         MyThread mt1 = new MyThread();
39         MyThread mt2 = new MyThread();
40 
41 
42         //启动线程
43         // public void start()使该线程开始执行;Java 虚拟机调用该线程的 run 方法。
44         mt1.start();
45         //mt1.start();// 线程的启动只能是一次
46         mt2.start();
47 
48   }

 

------------------------------------------------------------------------------------------------------------

 

 1  /**  第二种方式:实现Runnable接口
 2      避免了单线程带来的困扰
 3      *    (1): 创建一个类,让该类实现Runnable接口
 4 
 5      *    (2): 重写run方法
 6 
 7      *    (3): 创建该类的对象
 8 
 9      *    (4): 创建Thread类的对象,然后把3中的对象作为参数传递给Thread
10 
11      *    (5): 启动线程
12 
13      */
14 
15   //实现Runnable接口
16 
17   public class MyThread2 implements Runnable {
18    
19     public MyThread2() {
20         super();
21       }
22 
23       public void run() {
24         
25           for(int x = 0 ; x < 200 ; x++){
26             
27              System.out.println(Thread.currentThread().getName() + "---" + x);
28         }
29     }
30 }
31 
32   //测试方法
33 
34     private static void Test2() {
35 
36      // 创建MyThread的对象
37         MyThread2 mt = new MyThread2();
38         // 创建Thread类的对象,然后把3中的对象作为参数传递给Thread
39         // public Thread(Runnable target)
40         Thread t1 = new Thread(mt,"张飞");
41         Thread t2 = new Thread(mt,"关羽");
42         Thread t3 = new Thread(mt,"刘备");
43         // 启动线程
44         t1.start() ;
45         t2.start() ;
46         t3.start() ;
47     }

 

------------------------------------------------------------------------------------------------------------

  

 1  /**  第三种方式:使用匿名内部类的方式实现
 2     很少见
 3      *    new 类名/接口名() {      
 4 
 5      *      方法重写 ;
 6 
 7      *    } ;
 8 
 9      */
10 
11  //测试方法
12 
13  //匿名内部类
14 
15     @Test
16     private static void Test3() {
17 
18     new Thread() {
19            public void run() {
20                 System.out.println("线程执行了。。。。。。。");
21             }
22         }.start();
23     }

 

------------------------------------------------------------------------------------------------------------

© 著作权归作者所有

共有 人打赏支持
Jusenr
粉丝 0
博文 20
码字总数 10876
作品 0
西安
Android工程师
java基础thread——java5之后的多线程(浅尝辄止)

承上启下 虽然我们可以理解同步代码块和同步方法的锁对象问题,但是我们并没有直接看到在哪里加上了锁,在哪里释放了锁,为了更清晰的表达如何加锁和释放锁,JDK5以后提供了一个新的锁对象L...

潇潇漓燃 ⋅ 06/03 ⋅ 0

JAVA程序员面试题整理(较全面)

以下是在面试中可能会遇到的问题,话不多说,往下看 1、面向对象的特征有哪些方面? 2、访问修饰符public,private,protected,以及不写(默认)时的区别? 3、String 是最基本的数据类型吗? ...

编程大侠 ⋅ 04/09 ⋅ 0

【JavaSE(五)】Java面向对象(下)

原文地址:https://www.cloudcrossing.xyz/post/37/ 1 形式参数和返回值的问题 形式参数: 类名:需要该类的对象 抽象类名:需要该类的子类对象(具体类) 接口名:需要该接口的实现类对象 ...

苍云横渡 ⋅ 05/12 ⋅ 0

阿里专家与你分享:你要了解的Java多线程技术!

本次的分享主要围绕以下两个方面: Lambda入门 多线程技术 一、Lambda入门 Lambda起源于数学中的λ演算中的一个匿名函数,从它的起源我们可以知道,Lambda本身就是一个匿名函数,是Java8才推...

java高级架构牛人 ⋅ 05/24 ⋅ 0

阿里专家与你分享:你必须了解的Java多线程技术!

本次的分享主要围绕以下两个方面: Lambda入门 多线程技术 一、Lambda入门 Lambda起源于数学中的λ演算中的一个匿名函数,从它的起源我们可以知道,Lambda本身就是一个匿名函数,是Java8才推...

启示录是真的 ⋅ 05/25 ⋅ 0

Java面试题全集(上)+JavaSE基础

第一阶段:开发常用 JavaSE基础、Spring、Spring Boot、Spring Cloud、Hibernate、Mybatis、MySQL、Oracle、MariaDB(支持文档数据) 第二阶段:基础提升 JavaSE深入、JVM、数据结构+算法、H...

guod369 ⋅ 2017/12/28 ⋅ 0

从设计的角度讨论Java中线程的两种创建方式

Java中的多线程让我们的程序可以同时运行多个任务,即使我们的CPU是单核的。当然我们都明白这种情况下的同时运行,并不是真正的同时运行,而是JVM中的线程调度器根据时间片轮转的方式快速的在...

一路漫漫 ⋅ 2012/04/29 ⋅ 0

阿里专家与你分享:你必须了解的Java多线程技术

摘要:本文介绍了Lambda表达式的起源以及基本语法,并提供代码实例帮助大家理解Lambda表达式的使用。另外,本文介绍了Java开发中常用的多线程技术,详细介绍多线程涉及到的概念以及使用方法。...

nirvanalucky ⋅ 05/14 ⋅ 0

Scala笔记整理(四):Scala面向对象—类详解2(继承相关)

[TOC] 单例 希望某个类只存在一个使用的对象,而不管有多少个调用者在使用它,就是单例的概念。 Java中的单例 Scala中的单例 代码及说明如下: 输出结果如下: 伴生类和伴生对象 直接看下面的...

xpleaf ⋅ 04/20 ⋅ 0

Java编程学习:集合框架详解

Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于PC、数据中心、游戏控制台、科学超级计算机、移动电话和互...

Java小辰 ⋅ 05/30 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

十五周二次课

十五周二次课 17.1mysql主从介绍 17.2准备工作 17.3配置主 17.4配置从 17.5测试主从同步 17.1mysql主从介绍 MySQL主从介绍 MySQL主从又叫做Replication、AB复制。简单讲就是A和B两台机器做主...

河图再现 ⋅ 今天 ⋅ 0

docker安装snmp rrdtool环境

以Ubuntu16:04作为基础版本 docker pull ubuntu:16.04 启动一个容器 docker run -d -i -t --name flow_mete ubuntu:16.04 bash 进入容器 docker exec -it flow_mete bash cd ~ 安装基本软件 ......

messud4312 ⋅ 今天 ⋅ 0

OSChina 周一乱弹 —— 快别开心了,你还没有女友呢。

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @莱布妮子 :分享吴彤的单曲《好春光》 《好春光》- 吴彤 手机党少年们想听歌,请使劲儿戳(这里) @clouddyy :小萝莉街上乱跑,误把我认错成...

小小编辑 ⋅ 今天 ⋅ 7

mysql in action / alter table

change character set ALTER SCHEMA `employees` DEFAULT CHARACTER SET utf8mb4 DEFAULT COLLATE utf8mb4_general_ci ;ALTER TABLE `employees`.`t2` CHARACTER SET = utf8mb4 , COLLAT......

qwfys ⋅ 今天 ⋅ 0

Java 开发者不容错过的 12 种高效工具

Java 开发者常常都会想办法如何更快地编写 Java 代码,让编程变得更加轻松。目前,市面上涌现出越来越多的高效编程工具。所以,以下总结了一系列工具列表,其中包含了大多数开发人员已经使用...

jason_kiss ⋅ 昨天 ⋅ 0

Linux下php访问远程ms sqlserver

1、安装freetds(略,安装在/opt/local/freetds 下) 2、cd /path/to/php-5.6.36/ 进入PHP源码目录 3、cd ext/mssql进入MSSQL模块源码目录 4、/opt/php/bin/phpize生成编译配置文件 5、 . ./...

wangxuwei ⋅ 昨天 ⋅ 0

如何成为技术专家

文章来源于 -- 时间的朋友 拥有良好的心态。首先要有空杯心态,用欣赏的眼光发现并学习别人的长处,包括但不限于工具的使用,工作方法,解决问题以及规划未来的能力等。向别人学习的同时要注...

长安一梦 ⋅ 昨天 ⋅ 0

Linux vmstat命令实战详解

vmstat命令是最常见的Linux/Unix监控工具,可以展现给定时间间隔的服务器的状态值,包括服务器的CPU使用率,内存使用,虚拟内存交换情况,IO读写情况。这个命令是我查看Linux/Unix最喜爱的命令...

刘祖鹏 ⋅ 昨天 ⋅ 0

MySQL

查看表相关命令 - 查看表结构    desc 表名- 查看生成表的SQL    show create table 表名- 查看索引    show index from  表名 使用索引和不使用索引 由于索引是专门用于加...

stars永恒 ⋅ 昨天 ⋅ 0

easyui学习笔记

EasyUI常用控件禁用方法 combobox $("#id").combobox({ disabled: true }); ----- $("#id").combobox({ disabled: false}); validatebox $("#id").attr("readonly", true); ----- $("#id").r......

miaojiangmin ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部