文档章节

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

Jusenr
 Jusenr
发布于 2016/05/17 00:23
字数 561
阅读 9
收藏 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

进程概述 正在运行的程序就是进程 单线程不会出现安全问题,但是效率堪忧 分时调度:每个线程平均占用CPU 抢占调度:优先级不同的线程可以 Thread子类实现线程 继承至Thread类,并重写Threa...

T-newcomer
2017/10/21
0
0
多线程初探:三种方式创建多线程详细示例

多线程即在同一时间,可以做多件事情。 创建多线程有3种方式,分别是继承线程类,实现Runnable接口,匿名类 一:线程概念 首先要理解进程(Processor)和线程(Thread)的区别 进程:启动一个LOL.e...

一只阿木木
2018/08/01
0
0
在 Java 中初始化 List 的五种方法

在 Java 中初始化 的五种方法 1.构造 后使用 初始化 2.使用 双括号语法 3.使用 4. 使用 (JDK8) 5. 使用 (JDK9) 参考 在 Java 中初始化 的五种方法 Java 中经常需要使用到 List,下面简单介...

yzbyzz
2018/12/05
0
0
Java static和匿名内部类

-- static Java中,任何变量 / 代码存储时,都是 在编译时 由系统自动分配内存; 在静态变量编译后,所分配的内存会一直存在,直到程序退出内存才会释放这个空间; 类加载时,JVM会把静态变量...

desaco
2018/10/27
0
0
java基础thread——java5之后的多线程(浅尝辄止)

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

潇潇漓燃
2018/06/03
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Spark in action on Kubernetes - Playground搭建与架构浅析

前言 Spark是非常流行的大数据处理引擎,数据科学家们使用Spark以及相关生态的大数据套件完成了大量又丰富场景的数据分析与挖掘。Spark目前已经逐渐成为了业界在数据处理领域的行业标准。但是...

阿里云官方博客
7分钟前
0
0
小白大数据学习路线

学习大数据首先了解大数据技术得板块划分: 数据计算(离线计算):Hadoop、spark 数据计算(实时计算):storm、spartstreaming、flink 其他框架:zookeeper 数据采集:flume、Kafka 数据存...

董黎明
19分钟前
0
0
mariadb 内存占用优化

本文由云+社区发表 作者:工程师小熊 摘要:我们在使用mariadb的时候发现有时候不能启动起来,在使用过程中mariadb占用的内存很大,在这里学习下mariadb与内存相关的配置项,对mariadb进行调...

腾讯云加社区
今天
2
0
spring security 自定义登录认证

spring security 自定义认证登录 1.概要 1.1.简介 spring security是一种基于 Spring AOP 和 Servlet 过滤器的安全框架,以此来管理权限认证等。 1.2.spring security 自定义认证流程 1)认证...

EasyProgramming
今天
1
0
Win下Jenkins-2.138源码编译及填坑笔记

源码编译篇 1、 安装JDK1.8-181,操作系统添加JDK环境变量。Java -version验证一下。 注:Jenkins2.138版本,JDK必须jkd1.8.0-101以上,不支持Java9,Maven必须3.5.3以上。 2、 解压Maven3....

编程SHA
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部