Thread

一、线程的创建及启动

      //直接start
        new Thread().start();
        //实现runnable接口
        new Thread(new Runnable() {
            @Override
            public void run() {

            }
        }).start();

        //实现future回调
        new Thread(new FutureTask<Object>(new Callable<Object>() {
            @Override
            public Object call() throws Exception {
                return null;
            }
        })).start();
        //线程池工具类
        Executors.newCachedThreadPool().execute(new Runnable() {
            @Override
            public void run() {

            }
        });
        //手动设置参数线程池
        new ThreadPoolExecutor(corePoolSize, maximumPoolSize, keepAliveTime, unit, workQueue, threadFactory, rejectedExecutionHandler).execute(new Runnable() {
            @Override
            public void run() {

            }
        });

 

二、Thread的中断

    Thread thread=new Thread();
        
        //让出一下cpu资源,立刻重新开始竞争
        Thread.yield();
        
        //设置中断标记
        Thread.currentThread().interrupt();
        
        //等待指定线程执行完毕再继续执行当前线程
        try {
            thread.join();
        } catch (InterruptedException e) {
            //抛出异常会导致中断标记被清除,需要重新设置中断标记
            Thread.currentThread().interrupt();
        }
        
        
        try {
            //睡眠,暂停指定时间
            Thread.sleep(1000);
        } catch (InterruptedException e) {
            //抛出异常会导致中断标记被清除,需要重新设置中断标记
            Thread.currentThread().interrupt();
            
        }
    //阻塞线程
    LockSupport.park();
    //释放线程
    LockSupport.unpark(thread);
 

 三、线程的状态

 

四、Deamon线程

在Java虚拟机退出时Daemon线程中的finally块不一定会执行,因此不能依靠finally块中的内容来确保执行关闭或清理资源的逻辑。

 

 

-------参考资料:《并发编程的艺术》

 

posted @ 2020-09-07 15:44  kylinmac  阅读(321)  评论(0)    收藏  举报