zoukankan      html  css  js  c++  java
  • 创建线程的几种方式

    1、继承Thread类

      步骤:a、定义Thread类的子类,并重写该类的run方法,该run方法的方法体就代表了线程需要完成的任务。

          b、创建Thread子类的实例,即创建了线程对象。

          c、调用线程对象的start()方法来启动该线程。

    //通过继承Tread类来创建线程
    public ThreadTest1 extends Thread{
        //重写run()方法
        public void run(){
          System.out.println("我是一个线程。");
        }  
        public static void main(String[] args){
            //创建TreadTest1类的实例
            ThreadTest1 t = new ThreadTest1();
            //启动线程
            t1.start();  
        }
    }

    注:该方法创建的线程,多个线程之间无法共享线程类的实例变量。

    2、实现Runnable接口

      步骤:a、定义Runnable接口的实现类,并重写该接口的run()方法。

          b、创建Runnable实现类的实例,并以此实例作为Thread的target来创建Thread对象,该Thread对象才是真正的线程对象。

              c、调用线程对象的start()方法来启动该线程。

    //通过实现Runnable接口来创建线程
    public class ThreadTest2 implements Runnable{
      //重写run()方法
      public void run(){
         System.out.println("我是第二种创建线程的方法");
      }
      public static void main(String[] args){
          ThreadTest2 t2 = new ThreadTest2();
          new Thread(t2,"新线程").start();
      }
    }

    注:该方法创建的多个线程可共享线程类的实例变量。

    3、实现Callable接口(java 5开始提供)

      步骤:a、创建Callable接口的实现类实例,并实现call()方法,该call()方法将作为线程执行体,且该call()方法有返回值,再创建Callable实现类的实例。

              b、使用FutureTask类来包装Callable对象,该FutureTask对象封装了该Callable对象的call()方法的返回值。

          c、使用FutureTask对象作为Thread对象的target创建并启动新线程。

         d、调用FutureTask对象的get()方法来获得子线程执行后的返回值。

  • 相关阅读:
    雅虎网站页面性能优化的34条黄金守则
    borderimage
    jQuery实现滚动加载图片效果
    mysql数据库中创建与删除数据表
    (10)一步一步开发一个简单CAD之捕捉
    apach启动失败的原因
    (12)一步一步开发一个简单CAD之观察者模式
    简单基于OPENGL的三维CAD框架(1)照相机类
    简单基于OPENGL的三维CAD框架(1)COpenGLDC
    (13)一步一步开发一个简单CAD之像皮筋类
  • 原文地址:https://www.cnblogs.com/xiaoxli/p/9430919.html
Copyright © 2011-2022 走看看