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

     

     

     

     

     
  • 相关阅读:
    个人作业-Alpha项目测试
    第三次作业
    第二次作业
    第一次作业
    JQuery(一)页面加载,写入文本,对象转换,隐藏显示,基本选择器,层级选择器,基本过滤选择器,表单选择器,class操作,属性操作
    JavaScript(二)
    轮辐广告、简单选项卡
    div层随着页面大小变化相对位置不变、按钮隐藏一半鼠标放上去就出来,不放上去就退回去
    markDown语法详解
    Mybatis中动态SQL语句
  • 原文地址:https://www.cnblogs.com/stydejava/p/13436560.html
Copyright © 2011-2022 走看看