zoukankan      html  css  js  c++  java
  • java创建线程的几种方式(二)

    都是在之前创建线程的基础上创建的线程

    1. 利用线程池创建线程

    1.哪个方法需要线程,比如Task里面的方法需要使用线程那么实现Runnable

    2.用线程池的.submit去调用这个线程

    public class ThreadPool5 {

    public static void main(String[] args) {
    ExecutorService executorService = Executors.newCachedThreadPool();
    for(int i=0;i<100;i++){
    executorService.submit(new Task());
    }
    }
    }
    class Task implements Runnable{

    @Override
    public void run() {
    try {
    Thread.sleep(1000);
    }catch(InterruptedException e) {
    e.printStackTrace();
    }
    System.out.println(Thread.currentThread().getName());
    }
    }

    2. 利用计时器创建线程

    因为timer.schedule(TimerTask:线程,delay:初始时间,period:间隔时间)

    /**
    * 匿名内部类计时器实现线程
    */
    public class DemoTimmerTask {
    public static void main(String[] args) {
    Timer timer = new Timer();
    timer.schedule(new TimerTask() {
    @Override
    public void run() {
    System.out.println(Thread.currentThread().getName());
    }
    },1000,1000);
    }
    }

    java.util.Timer定时器,实际上是个线程,定时调度所拥有的TimerTasks。
    一个TimerTask实际上就是一个拥有run方法的类,需要定时执行的代码放到run方法体内,TimerTask一般是以匿名类的方式创建。

    https://www.iteye.com/blog/batitan-253483

    3. 匿名内部类创建线程

    匿名内部类,就是直接实现父类再括号实现里面的方法

    比如第一个是用了有参的构造函数,然后实现run()

    第二个是直接使用的Thread()类,然后重写里面的run();

    /**
    * 匿名内部类实现线程
    */
    public class AnonymousInnerClassDemo {
    public static void main(String[] args) {
    new Thread(new Runnable() {
    @Override
    public void run() {
    System.out.println("Runnable:"+Thread.currentThread().getName());
    }
    }).start();
    new Thread(){
    @Override
    public void run() {
    System.out.println("Thread:"+Thread.currentThread().getName());
    }
    }.start();
    }
    }

    4. Lambda表达式创建线程

    /**
    * lombda表达式创建线程
    */
    public class LambdaThread {
    public static void main(String[] args) {
    new Thread(()-> System.out.println(Thread.currentThread().getName())).start();
    }
    }
  • 相关阅读:
    Linux 调用动态库(.SO文件)总结
    Spring Batch 之 skip讲解(九)
    达梦数据库的工具(dmrman、disql)如何在 麒麟V10 下实现上下翻页
    Silverlight BitmapImage的SetSource(Stream streamSource)致命性错误的解决办法
    MEF In MVC
    诟病WCF之一,对已知类型的支持比较弱智(WCF面向接口编程)
    用JQuery异步加载PartialView
    不用windows安装盘安装64位win7或windows server 2008的方法(32位winpe下安装64位的办法)
    WCF客户端配置文件分离(自定义WCF客户端配置文件)
    起步
  • 原文地址:https://www.cnblogs.com/chwl-ljx/p/15497358.html
Copyright © 2011-2022 走看看