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

   

  /**  第一种方式:继承Thread类

     *             1. 定义一个类,然后让该类继承Thread类

     *             2. 重写run方法

     *             3. 创建定义的这个类的对象

     *             4. 启动线程

     */

  //继承Thread类

   public class MyThread extends Thread{

     public MyThread() {}

     public MyThread(String name) {
super(name);
} //run方法中封装的应该是要被线程执行的代码 ,run方法中代码的原则,一般存方的都是比较耗时的代码
public void run (){ for (int i = 0; i < 200; i++) { System.out.println(Thread.currentThread().getName() + "---" + i);
}
}
}   //测试方法   private static void Test() {    // 创建对象
MyThread mt1 = new MyThread();
MyThread mt2 = new MyThread(); //启动线程
// public void start()使该线程开始执行;Java 虚拟机调用该线程的 run 方法。
mt1.start();
//mt1.start();// 线程的启动只能是一次
mt2.start();   }

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

  /**  第二种方式:实现Runnable接口
     避免了单线程带来的困扰
     *    (1): 创建一个类,让该类实现Runnable接口      *    (2): 重写run方法      *    (3): 创建该类的对象      *    (4): 创建Thread类的对象,然后把3中的对象作为参数传递给Thread      *    (5): 启动线程      */   //实现Runnable接口   public class MyThread2 implements Runnable {  public MyThread2() {
super();
} public void run() { for(int x = 0 ; x < 200 ; x++){ System.out.println(Thread.currentThread().getName() + "---" + x);
}
}
}   //测试方法 private static void Test2() {     // 创建MyThread的对象
MyThread2 mt = new MyThread2();
// 创建Thread类的对象,然后把3中的对象作为参数传递给Thread
// public Thread(Runnable target)
Thread t1 = new Thread(mt,"张飞");
Thread t2 = new Thread(mt,"关羽");
Thread t3 = new Thread(mt,"刘备");
// 启动线程
t1.start() ;
t2.start() ;
t3.start() ;
}

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

 

  /**  第三种方式:使用匿名内部类的方式实现
    很少见
     *    new 类名/接口名() {      *      方法重写 ;      *    } ;      */  //测试方法  //匿名内部类 @Test
private static void Test3() {     new Thread() {
public void run() {
System.out.println("线程执行了。。。。。。。");
}
}.start();
}

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

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

  1. Java中从控制台输入的三种方式

    我们最熟悉的从控制台读取一个字符或者一个字符串都知道用Scanner,那么除了Scanner还有没有其他的呢,答案是有的,我们来看看. System.in.read() System.in.read( ...

  2. JAVA中使用LDAP登录的三种方式

    搜索中关于java 登录ldap,大部分会采用  cn=xxx,ou=xxx,dc=xxx的方式,此处的cn是用户的Display Name,而不是account,而且如果ou有多层,比如我们的OU就 ...

  3. 如何实现有返回值的多线程 JAVA多线程实现的三种方式

    可返回值的任务必须实现Callable接口,类似的,无返回值的任务必须Runnable接口.执行Callable任务后,可以获取一个Future的对象,在该对象上调用get就可以获取到Callable ...

  4. Java中获取键盘输入值的三种方法

    Java中获取键盘输入值的三种方法     Java程序开发过程中,需要从键盘获取输入值是常有的事,但Java它偏偏就没有像c语言给我们提供的scanf(),C++给我们提供的cin()获取键盘输入值 ...

  5. Java反射获取class对象的三种方式,反射创建对象的两种方式

    Java反射获取class对象的三种方式,反射创建对象的两种方式 1.获取Class对象 在 Java API 中,提供了获取 Class 类对象的三种方法: 第一种,使用 Class.forName ...

  6. 在Tomcat中部署web项目的三种方式

    搬瓦工搭建SS教程 SSR免费节点:http://www.xiaokeli.me 在这里介绍在Tomcat中部署web项目的三种方式: 1.部署解包的webapp目录 2.打包的war文件 3.Man ...

  7. Tomcat中部署web应用的三种方式

    Tomcat中部署web应用的三种方式(静态部署)       第一种,针对war或解压后的war,最为常用的是直接操作webapp目录,将完整的war包或者web应用直接放到webapp目录下.使用 ...

  8. spring中创建bean对象的三种方式以及作用范围

    时间:2020/02/02 一.在spring的xml配置文件中创建bean对象的三种方式: 1.使用默认构造函数创建.在spring的配置文件中使用bean标签,配以id和class属性之后,且没有 ...

  9. 【java多线程】多线程的创建三种方式--笔记

    申明:线程的概念以及进程的相关概念,可以参考网络上其他资料,这里只讨论多线程是怎么实现. 一.多线程的简单理解 明白什么是多线程,小生通俗一点的理解为:在一个程序里,我想同时让这个程序完成多个任务. ...

随机推荐

  1. 分析MariaDB初始化脚本mysql_install_db

    在初始化MySQL的过程中经常会碰到各种问题,如 FATAL ERROR: Could not find ./bin/my_print_defaults ERROR: Can't create/wri ...

  2. [c++] Templates

    Template是编译时多态.所有的模板都是在编译时产生对应的代码,它没有面向对象中的虚表,无法实现动态多态. Function Template A function template is a p ...

  3. CSS3中惊艳的gradient

    以前曾经记录过linear-gradient(线性渐变)和 radial-gradient(径向渐变)的语法. 可以参考<CSS3中border-radius.box-shadow与gradie ...

  4. 1Z0-053 争议题目解析86

    1Z0-053 争议题目解析86 考试科目:1Z0-053 题库版本:V13.02 题库中原题为: 86.Your production database is running in archivel ...

  5. Freemark笔记

    Freemark基本语法知识 Freemark 常用代码总结1 Freemark 常用代码总结2 笔记,吐槽一下freemark的蛋疼语法. 1.elseif 中间不能有空格 2.三目运算符 语法和j ...

  6. 开源网站.NETMVC+ Layui+SqlSugar+RestSharp

    SugarSite一个前端支持移动端的企业网站,目前只支持了简单功能,后续还会加上论坛等. 源码GIT地址: https://github.com/sunkaixuan/SugarSite 技术介绍 ...

  7. 从零开始学习jQuery (四) 使用jQuery操作元素的属性与样式

    本系列文章导航 从零开始学习jQuery (四) 使用jQuery操作元素的属性与样式 一.摘要 本篇文章讲解如何使用jQuery获取和操作元素的属性和CSS样式. 其中DOM属性和元素属性的区分值得 ...

  8. Jsonp跨域访问

    很早之前看过好几篇跨域访问的文章,然后做项目的时候基本没有遇到跨域访问的问题.不过该来的还是会来,前些天终于让我遇到了.于是重温了一下原理这些,再进行实战.于是现在也敢通过实战后的一些理解来和大家分享 ...

  9. Collection框架

    Collection框架 集合框架(Collection Framework)泛指java.util包的若干个类和接口.如Collection,List,ArrayList,LinkedList,Ve ...

  10. 在PHP语言中使用JSON和将json还原成数组

    在之前我写过php返回json数据简单实例,刚刚上网,突然发现一篇文章,也是介绍json的,还挺详细,值得参考.内容如下 从5.2版本开始,PHP原生提供json_encode()和json_deco ...