java的线程和线程池

    xiaoxiao2021-03-25  68

    1,信号量 的使用

    private void text2() { //信号 量,允许个数,超过数量时会 阻塞线程 semaphore = new Semaphore(5); for (int i = 0; i < 100; i++) { new Thread(new Runnable() { @Override public void run() { method2(); } }).start(); } } private void method2() { Log.i("qq--" + Thread.currentThread().getName(), "开始"); try { //获取 一把锁 semaphore.acquire(); Thread.currentThread().sleep(1000); //释放 一把锁 semaphore.release(); } catch (InterruptedException e) { e.printStackTrace(); } Log.i("qq--" + Thread.currentThread().getName(), "结束"); }

    2,线程池 Executors

    /*线程池*/ private void text3() { executorService = Executors.newCachedThreadPool(); Executors.newFixedThreadPool(5);//固定线程池 Executors.newScheduledThreadPool(5);//计划任务线程池 Executors.newSingleThreadExecutor();//单个线程池 for (int i = 0; i < 100; i++) { executorService.execute(new Runnable() { @Override public void run() { method3(); } }); } } private void method3() { Log.i("qq--" + Thread.currentThread().getName(), "开始"); try { Thread.currentThread().sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } Log.i("qq--" + Thread.currentThread().getName(), "结束"); }

    3,线程池 ThreadPoolExecutor

    /*ThreadPoolExecutor 线程池有一个 线程集合,和一个任务队列 核心池容量,最大线程量,任务完成之后 延时多久“裁人”, 延时时间单位,存储工作任务的队列,线程工厂*/ private void text4() { //工作任务的队列 的最大任务个数 LinkedBlockingQueue<Runnable> queue = new LinkedBlockingQueue<>(100); ThreadPoolExecutor poolExecutor = new ThreadPoolExecutor(5, 5, 10L, TimeUnit.MINUTES, queue, new ThreadFactory() { @Override public Thread newThread(Runnable r) { Thread thread = new Thread(r); return thread; } }); for (int i = 0; i < 100; i++) { poolExecutor.execute(new Runnable() { @Override public void run() { method4(); //线程安全 的Integer 包装类 new AtomicInteger(1); new Integer(1); } }); } } private void method4() { Log.i("qq--" + Thread.currentThread().getName(), "开始"); try { Thread.currentThread().sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } Log.i("qq--" + Thread.currentThread().getName(), "结束"); }

    转载请注明原文地址: https://ju.6miu.com/read-32858.html

    最新回复(0)