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

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

    /**  第一种方式:继承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 类名/接口名() {

     *      方法重写 ;

     *    } ;

     */

 //测试方法

 //匿名内部类

private static void Test3() {

    new Thread() {
           public void run() {
                System.out.println("线程执行了。。。。。。。");
            }
        }.start();
    }

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

时间: 2024-10-12 09:16:51

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

Java中List集合遍历的三种方式

首先创建一个List集合: List<String> list = new ArrayList<String>();list.add("name"); list.add("age"); list.add("sex"); 第一种:利用集合的size()方法遍历for(int i= 0:i<list.size();i++){ list.get(i);} 第二种:for增强循环for(String string : str

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

Java中获取键盘输入值的三种方法     Java程序开发过程中,需要从键盘获取输入值是常有的事,但Java它偏偏就没有像c语言给我们提供的scanf(),C++给我们提供的cin()获取键盘输入值的现成函数!Java没有提供这样的函数也不代表遇到这种情况我们就束手无策,请你看以下三种解决方法吧: 以下将列出几种方法: 方法一:从控制台接收一个字符,然后将其打印出来 import java.io.*; public static void main(String [] args) throws

java小知识点(一)---Java中获取键盘输入值的三种方法

Java中获取键盘输入值的三种方法   程序开发过程中,需要从键盘获取输入值是常有的事,但Java它偏偏就没有像c语言给我们提供的scanf(),C++给我们提供的cin()获取键盘输入值的现成函数!Java没有提供这样的函数也不代表遇到这种情况我们就束手无策,请你看以下三种解决方法吧:   以下将列出几种方法:   方法一:从控制台接收一个字符,然后将其打印出来   publicstatic void main(String [] args) throws IOException{   Sys

java多线程开启的三种方式

1.继承Thread类,新建一个当前类对象,并且运行其start()方法 1 package com.xiaostudy.thread; 2 3 /** 4 * @desc 第一种开启线程的方式 5 * @author xiaostudy 6 * 7 */ 8 public class Demo1_Thread extends Thread { 9 10 public void run() { 11 for (int i = 0; i < 10; i++) { 12 System.out.pri

多线程的实现三种方式

多线程的实现三种方式:1 继承thread类,重写run方法 继承thread方法就可以i调用thread类的start方法,,start方法调用java natvie start0();这个是调用操作系统的方法,start方法 package com.cxy; class Mythread01 extends Thread{ @Override public void run(){ System.out.println("iii"); }} public class Mythread

JSP中设置Session有效时间的三种方式

JSP中设置Session有效时间的三种方式 2010-08-03 10:02:49|  分类: Java Web|举报|字号 订阅 (1)在主页面或者公共页面中加入: HttpSession session=request.getSession(true); session.setMaxInactiveInterval(900);参数900单位是秒,即在没有活动15分钟后,session将失效.这里要注意这个session设置的时间是根据服务器来计算的,而不是客户端.所以如果是在调试程序,应该

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

Java反射获取class对象的三种方式,反射创建对象的两种方式 1.获取Class对象 在 Java API 中,提供了获取 Class 类对象的三种方法: 第一种,使用 Class.forName 静态方法. 前提:已明确类的全路径名. 第二种,使用 .class 方法. 说明:仅适合在编译前就已经明确要操作的 Class 第三种,使用类对象的 getClass() 方法. 适合有对象示例的情况下 package com.reflection; /** * Created by Liuxd

cocos2d 中加入显示文字的三种方式(CCLabelTTF 、CCLabelBMFont 和CCLabelAtlas)

在 cocos2d 中有三个类能够在层或精灵中加入文字: CCLabelTTF CCLabelBMFont CCLabelAtlas      CCLabelTTF CCLabelTTF 每次调用 setString (即改变文字)的时候,一个新的OPENGL 纹理将会被创建..这意味着setString 和创建一个新的标签一样慢. 所以,当你须要频繁的更新它们的时候,尽可能的不用去使用标签对象.  而应该使用CCLabelAtlas或者是CCLabelBMFont. OK, 看下它的用法 CC

.net 中dapper实现事务的三种方式总结

.net 中实现事务查询的三种方式 1.TransactionScope  通过创建TransactionScope  对象然后包裹connection对象执行相关查询操作,完成 此种方式可以用于分布式事务操作,当链接不同数据库时,通过简单配置可以实现不同数据库的事务操作,当使用单机查询时(即只有一个数据库并且与应用服务器在同一台电脑时,不需要做额外配置) 2.通过connection 对象 BeginTransaction方法 创建,然后执行查询方法是都带上 transaction对象来实现