• java多线程创建



    package com.mayikt.thread.days01;
    
    /**
     * @author 余胜军
     * @ClassName Thread01
     * @qq 644064779
     * @addres www.mayikt.com
     * 微信:yushengjun644
     */
    public class Thread01 extends Thread {
        /**
         * 线程执行的代码 就是在run方法中  执行完毕 线程死亡
         */
        @Override
        public void run() {
            System.out.println(Thread.currentThread().getName() + "<我是子线程>");
            try {
                // 当前线程阻塞3s 时间
                Thread.sleep(3000);
            } catch (Exception e) {
    
            }
            System.out.println(Thread.currentThread().getName() + "<阻塞完毕!>");
        }
    
        public static void main(String[] args) {
            // 启动线程 调用start方法而不是run方法
            System.out.println(Thread.currentThread().getName());
            // 调用start()线程是不是立即被cpu调度执行 就绪状态 ----等待cpu调度 线程从 就绪到运行状态
            new Thread01().start();
            new Thread01().start();
            System.out.println("主线程执行完毕!");
        }
    }

    package com.mayikt.thread.days01;
    
    /**
     * @author 余胜军
     * @ClassName Thread02
     * @qq 644064779
     * @addres www.mayikt.com
     * 微信:yushengjun644
     */
    public class ThreadRunnable implements Runnable {
    
        @Override
        public void run() {
            System.out.println(Thread.currentThread().getName() + "<我是子线程>");
        }
    
        public static void main(String[] args) {
    //        // 启动线程
    //        new Thread(new ThreadRunnable()).start();
            // 2.使用匿名内部类的形式创建线程
            new Thread(() -> System.out.println(Thread.currentThread().getName() + "<我是子线程>"), "蚂蚁课堂余胜军线程").start();
    
        }
    }

    package com.mayikt.thread.days01;
    
    import java.util.concurrent.Callable;
    
    /**
     * @author 余胜军
     * @ClassName ThreadCallable
     * @qq 644064779
     * @addres www.mayikt.com
     * 微信:yushengjun644
     */
    public class ThreadCallable implements Callable<Integer> {
        /**
         * 当前线程需要执行的代码 返回结果
         *
         * @return
         * @throws Exception
         */
        @Override
        public Integer call() throws Exception {
            System.out.println(Thread.currentThread().getName() + "开始执行..");
            try {
                Thread.sleep(3000);
            } catch (Exception e) {
    
            }
            System.out.println(Thread.currentThread().getName() + "返回1");
            return 1;
        }
    }
    package com.mayikt.thread.days01;
    
    import java.util.concurrent.ExecutionException;
    import java.util.concurrent.FutureTask;
    import java.util.concurrent.locks.LockSupport;
    
    /**
     * @author 余胜军
     * @ClassName Thread02
     * @qq 644064779
     * @addres www.mayikt.com
     * 微信:yushengjun644
     */
    public class Thread02 {
        public static void main(String[] args) throws ExecutionException, InterruptedException {
            ThreadCallable threadCallable = new ThreadCallable();
            FutureTask<Integer> integerFutureTask = new FutureTask<Integer>(threadCallable);
            new Thread(integerFutureTask).start();
            // 我的主线程需要等待我们子线程给我的返回结果
            Integer result1 = integerFutureTask.get();
            System.out.println(Thread.currentThread().getName() + "," );
    //        LockSupport.park();
    //        LockSupport.unpark();
            // juc 并发中
    //        Thread thread01 = new Thread(new Runnable() {
    //            @Override
    //            public void run() {
    //                System.out.println("我是子线程开始");
    //                LockSupport.park();
    //                System.out.println("我是子线程结束");
    //            }
    //        });
    //        thread01.start();
    //        try {
    //            Thread.sleep(3000);
    //        } catch (Exception e) {
    //
    //        }
    //        LockSupport.unpark(thread01);
    
        }
    }

    线程池

    package com.mayikt.thread.days01;
    
    import java.util.concurrent.ExecutorService;
    import java.util.concurrent.Executors;
    
    /**
     * @author 余胜军
     * @ClassName Test03
     * @qq 644064779
     * @addres www.mayikt.com
     * 微信:yushengjun644
     */
    public class Test03 {
        public static void main(String[] args) {
            ExecutorService executorService = Executors.newCachedThreadPool();
            executorService.execute(() -> System.out.println(Thread.currentThread().getName() + "我是子线程"));
        }
    }

  • 相关阅读:
    微信小程序Rx 引入 调用合并的方法
    小程序 引入 es-canvas wx:for 单页面渲染多个for不同数据
    jquery操作数组对象
    Docker MySQL 8 主从配置
    CentOS 7 安装 LNMP
    lnmp1.6 配置负载均衡
    Nginx + PHP-FPM 参数优化、性能监视和问题排查
    「查缺补漏」巩固你的Nginx知识体系
    Android生成SHA1(证书指纹)
    android studio 如何把依赖导出成 jar
  • 原文地址:https://www.cnblogs.com/angdh/p/15605922.html
Copyright © 2020-2023  润新知