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

     

     

     

     

     
  • 相关阅读:
    十一、docker仓库
    十、Docker容器:磁盘&内存&CPU资源限制实战
    八、docker的跨主机网络通信--flanneld
    九、dockerfile制作docker 镜像
    七、自己定制一个docker镜像
    六、docker的数据卷
    五、docker容器的网络访问
    四、docker容器的操作
    三、docker的镜像操作
    商品SKU
  • 原文地址:https://www.cnblogs.com/stydejava/p/13436560.html
Copyright © 2011-2022 走看看