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()方法来获得子线程执行后的返回值。

  • 相关阅读:
    关于在Websphere下程序找不到jar包内.properties文件的问题
    MysqL的root用户不允许远程连接
    ajax提交表单数据到controller
    js表单验证
    jq删除标签中的元素
    点击超链接触发js事件
    spring的特点
    mysql每个jar包的作用
    抽象工厂举例
    简单的省市联动
  • 原文地址:https://www.cnblogs.com/xiaoxli/p/9430919.html
Copyright © 2011-2022 走看看