zoukankan      html  css  js  c++  java
  • 多线程及线程并发库Executors

    1.join() 优先执行这个线程

    2.yield() 让出本次执行时间片

    3.setDaemon(true) 线程可以变成守护线程

    import java.util.concurrent.locks.ReentrantLock;
    
    public class thread {
        public static void main(String[] args){
            MyThread myThread = new MyThread();
            Thread thread = new Thread(myThread);
            Thread thread1 = new Thread(myThread);
            thread.start();
            thread1.start();
        }
    }
    class MyThread implements Runnable{
    
        private int ticket = 10;
        @Override
        public void run() {
            for (int i=0;i<100;i++){
               method();
                }
            }
        ReentrantLock lock = new ReentrantLock();
            private void method() {
                //
                lock.lock();
                try {
                    if(ticket>0){
                        ticket--;
                        try {
                            Thread.sleep(1000);
                        } catch (InterruptedException e) {
                            e.printStackTrace();
                        }
                        System.out.println(ticket);
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }finally {
                    //解锁
                    lock.unlock();
                }
        }
    
    }

     -------------------------------------------------------------------

    线程池

    线程池的作用:

    1.降低资源消耗

    重复利用已创建的线程降低线程创建和销毁造成的消耗

    2.提高响应速度

    当任务到达时,不需要创建线程就可以立刻执行

    3.提高线程的可管理性

    对线程池可以进行统一分配,调优

    Executors类

    import java.util.concurrent.ExecutorService;
    import java.util.concurrent.Executors;
    import java.util.concurrent.ScheduledExecutorService;
    import java.util.concurrent.TimeUnit;
    
    /*
    *  线程池
    * */
    public class Demo {
    
        public static void main(String[] args) {
    //        创建单线程
    //        ExecutorService es = Executors.newSingleThreadExecutor();
    //        创建固定线程
    //        ExecutorService es = Executors.newFixedThreadPool(2);
    //        创建缓存线程无大小
    //        ExecutorService es = Executors.newCachedThreadPool();
            ScheduledExecutorService es = Executors.newScheduledThreadPool(3);
    //        es.execute(new demo1());
    //        es.execute(new demo1());
    //        调度,延迟3秒执行
            es.schedule(new demo1(),3000, TimeUnit.MILLISECONDS);
            es.shutdown();
        }
    }
    class demo1 implements Runnable{
    
        @Override
        public void run() {
            for (int i=0;i<10;i++){
                System.out.println(Thread.currentThread().getName()+"---"+i);
                try {
                    Thread.sleep(500);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        }
    }
  • 相关阅读:
    开源项目
    引入CSS的三种方式
    Android打开数据库读取数据
    每日日报2020.10.16 1905
    课程2 1905
    每日日报2020.10.13 1905
    每日日报2020.10.15 1905
    每日日报2020.10.8 1905
    每日日报2020.10.9 1905
    每日日报2020.10.12 1905
  • 原文地址:https://www.cnblogs.com/mm163/p/10674506.html
Copyright © 2011-2022 走看看