java 线程 (二) 线程池

package cn.sasa.demo2;

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

public class Test {
    public static void main(String[] args) {
        /**
         * 线程状态
         * Thread.State
         * 
         * NEW
         * 至今尚未启动 new ...()
         * 
         * RUNNABLE
         * 正在执行 start()
         * 
         * BLOCKED
         * 受阻塞 并 等待某个监视器锁
         * 
         * WAITING
         * 无限期等待另一个线程来执行某一特定操作的线程 
         * wait() 等待 notify()唤醒 
         * 
         * TIMED_WAITING
         * 等待另一线程来执行,有等待时限 休眠 sleep()
         * 
         * TERMINATED
         * 已退出---- run()结束  /  stop() 已过时
         * 
         * 受阻塞:线程具有CPU的执行资格,等CPU的资源
         * 休眠等待:线程放弃CPU的执行资格
         * 
         * 线程池
         * 从jdk5之后内置线程池
         * 
         * 1、使用工厂类Executors 中的静态方法创建线程对象,指定线程的个数
         * 2、调用newFixedThreadPool 返回线程池对象 ExecutorService
         * 
         */
        ExecutorService es = Executors.newFixedThreadPool(2);
        es.submit(new Runnable() {
            public void run() {
                System.out.println(Thread.currentThread().getName() + "...hello");
            }
        });
        
        es.submit(new Runnable() {
            public void run() {
                System.out.println(Thread.currentThread().getName() + "...abc");
            }
        });
        
        es.submit(new Runnable() {
            public void run() {
                System.out.println(Thread.currentThread().getName() + "...hahaha");
            }
        });
        
        //shutdown 销毁线程池,不常用,因为建立线程池就是为了线程不被销毁
        //es.shutdown();
        
        for(int i=0; i<100; i++) {
            System.out.println(i);
        }
    }
}

猜你喜欢

转载自www.cnblogs.com/SasaL/p/10185233.html