zoukankan      html  css  js  c++  java
  • 创建线程

    创建线程

    1.继承Thread类

    步骤:

    1.创建一个Thread类的子类。

    2.重写Thread类中的run()方法。

    3.创建Thread类子类的对象。

    4.子类对象调用start()方法,开启新的线程。

    public class MyThread extends Thread{//1.创建一个Thread类的子类。
        @Override
       public void run() {//2.重写Thread类中的run()方法
             //获取线程名称
           String name = getName();
           System.out.println("^MyThreadname---"+name);
      }
    }

     

    public class GetName {
       public static void main(String[] args) {
           MyThread myThread = new MyThread();//3.创建Thread类子类的对象。
           myThread.start();//子类对象调用start()方法,开启新的线程。

           
           //没有继承Thread类,只能通过currentThread来获取当前的主线程名称
           String name = currentThread().getName();
           System.out.println("*main--" + name);
      }
    }

     

    2.实现Runnable接口

    步骤:

    1.定义一个Runnable接口的实现类,并重写run()方法。

    2.创建Runnable接口实现类的对象。

    3.将接口实现类对象作为target来创建Thread对象。

    4.Thread对象调用start()方法。

    public class MyRunableImpl implements Runnable{//1.定义一个Runnable接口的实现类,并重写run()方法。
       @Override
       public void run() {
           for (int i = 0; i <5 ; i++) {
               System.out.println(Thread.currentThread().getName()+"--"+i);
          }
      }
    }
    public class Application {
       public static void main(String[] args) {

           //定义一个Runnable
           MyRunableImpl myRunable = new MyRunableImpl();//2.创建Runnable接口实现类的对象。
           Thread thread = new Thread(myRunable);//3.将接口实现类对象作为target来创建Thread对象。
           thread.start();//4.Thread对象调用start()方法。

      }
    }
    第二种方法的好处

    1.避免继承带来的局限性

    2.增强程序的拓展性,降低程序的耦合性。将设置线程任务和开启线程分离。

     

    线程池

    JVM根据用户参数创建一定数量的线程,放进队列中。在线程创建以后启动这些任务。当线程数量多与任务,多出的线程会在队列中等候。相反,当用户创建的线程少于任务时,任务会在等候。当有任务执行完毕,线程回归线程池,线程调度器发现可用线程,从而会从取出任务执行。

    步骤:

    1.使用线程池的工厂类Executors里面的提供的静态方法,newFixedThreadPool。生产指定数量的线程。

    2.创建Runnable接口的实现类,重写run()方法。

    3.调用ExecutorService中的submit方法开启线程,需要传递Runnable接口实现类的对象。

     

    ExecutorService threadPool = Executors.newFixedThreadPool(2);//1.使用线程池的工厂类Executors里面的提供的静态方法,newFixedThreadPool。生产指定数量的线程。
    threadPool.submit(impl);//调用ExecutorService中的submit方法开启线程,需要传递Runnable接口实现类的对象。

     

     

     

     

     
  • 相关阅读:
    java中math类
    java中的值传递和引用传递(转)
    eclipse 字体和配色修改
    JAR WAR EAR包的区别
    java中基本类型
    tomcat 7.0 配置详解
    或许你需要一些可操作性更强的实践
    Assembly.CreateInstance()与Activator.CreateInstanc
    OOD沉思录2 类和对象的关系包含关系
    C#的插件开发
  • 原文地址:https://www.cnblogs.com/stydejava/p/13436560.html
Copyright © 2011-2022 走看看