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接口实现类的对象。

     

     

     

     

     
  • 相关阅读:
    pat00-自测5. Shuffling Machine (20)
    Spiral Matrix
    Search in Rotated Sorted Array II
    Search in Rotated Sorted Array
    Best Time to Buy and Sell Stock II
    4Sum
    3Sum Closest
    3Sum
    MySQL存储过程、函数和游标
    Word Ladder
  • 原文地址:https://www.cnblogs.com/stydejava/p/13436560.html
Copyright © 2011-2022 走看看