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();
    }

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

时间: 01-21

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

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

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

Linux中设置服务自启动的三种方式

有时候我们需要Linux系统在开机的时候自动加载某些脚本或系统服务 主要用三种方式进行这一操作: ln -s                       在/etc/rc.d/rc*.d目录中建立/etc/init.d/服务的软链接(*代表0-6七个运行级别之一) chkonfig                命令行运行级别设置 ntsysv                   伪图形运行级别设置 注意:1.这三种方式主要用于以redhat为基础的发行版 2.如果还不知道运行级别是什么,那么最

JAVA多线程实现的三种方式

JAVA多线程实现方式主要有三种:继承Thread类.实现Runnable接口.使用ExecutorService.Callable.Future实现有返回结果的多线程. 当中前两种方式线程运行完后都没有返回值,仅仅有最后一种是带返回值的. 1.继承Thread类实现多线程 继承Thread类的方法虽然被我列为一种多线程实现方式,但Thread本质上也是实现了Runnable接口的一个实例,它代表一个线程的实例,而且,启动线程的唯一方法就是通过Thread类的start()实例方法.start(

Java中OutOfMemoryError(内存溢出)的三种情况及解决办法

相信有一定java开发经验的人或多或少都会遇到OutOfMemoryError的问题,这个问题曾困扰了我很长时间,随着解决各类问题经验的积累以及对问题根源的探索,终于有了一个比较深入的认识. 在解决java内存溢出问题之前,需要对jvm(java虚拟机)的内存管理有一定的认识.jvm管理的内存大致包括三种不同类型的内存区域:Permanent Generation space(永久保存区域).Heap space(堆区域).Java Stacks(Java栈).其中永久保存区域主要存放Class

关于JAVA中HashMap集合的的三种超不好记的便利方案

HashMap 和 HashSet 是 Java Collection Framework 的两个重要成员,其中 HashMap 是 Map 接口的常用实现类 1:先创建一个类 1 package Day; 2 3 import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Map.Entry; import java

Java中从键盘输入的三种方法

import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Scanner; public class EnterTest { public static void main(String[] args) { //主方法 CharTest(); //调用System.in方法 ReadTest(); //调用ReadTest方法 Scan

多线程开启的三种方式

class Program { static int Test(int i) { Console.WriteLine("test"+i); return 100; Thread.Sleep(10); //让当前线程休眠(暂停当前线程的执行)单位为毫秒ms } static void Main(string[] args) //在main方法中执行 一个线程的执行是从上往下执行的 { //通过委托来开启一个线程 //Func<int,int> a = Test; //IAsy