zoukankan      html  css  js  c++  java
  • Java多线程的几种实现方法

    1. 继承Thread类
    public class MyThread extends Thread {  
      public void run() {  
       System.out.println("MyThread.run()");
      }  
    }  
    public static void main(String [] args ){
    MyThread myThread1 = new MyThread();  
    MyThread myThread2 = new MyThread();  
    myThread1.start();  
    myThread2.start();
    }
    
    1. 实现Runable接口
    public class MyThread extends OtherClass implements Runnable {  
      public void run() {  
       System.out.println("MyThread.run()");  
      }  
      public static void main(String[] args){
      MyThread myThread = new MyThread();  
            Thread thread = new Thread(myThread);  //实例化Thread传入Runable target
             thread.start();  
      }
    }  
    
    

    事实上,当传入一个Runnable target参数给Thread后,Thread的run()方法就会调用target.run(),参考JDK源代码:

    public void run() {  
      if (target != null) {  
       target.run();  
      }  
    }  
    

    实现Runnable接口相对于扩展Thread类来说,具有很大的优势。这种方式不仅有利于程序的健壮性,使代码能够被多个线程共享,而且代码和数据资源相对独立,从而特别适合多个具有相同代码的线程去处理同一资源的情况。
    后面两种情况不常用:
    3. 实现Callable接口通过FutureTask包装器来创建Thread线程。

    实现Callable接口,新建当前类对象,再新建FutureTask类对象时传入当前类对象,接着新建Thread类对象时传入FutureTask类对象,最后运行Thread对象的start()方法新建当前类对象。

    4.使用ExecutorService、Callable、Future实现有返回结果的多线程。

  • 相关阅读:
    arcgis api for flex 开发入门
    Error #2148
    为Flex Builder设置测试服务器
    地图服务报 error #2035
    springMVC整理03--处理数据模型 & 试图解析器 & @ResponseBody & HttpEntity
    FastDFS安装与使用
    springMVC整理02--常用注解的使用
    springMVC整理01--搭建普通的工程
    Spring模块介绍
    spring05-Spring事务管理
  • 原文地址:https://www.cnblogs.com/jiaorenzhan/p/10623950.html
Copyright © 2011-2022 走看看