一.Thread与Executors 开启新的线程,我们经常会采用如下方法: Thread thread =new Thread(new Runnable() { @Override public void run() { System.out.println("new thread"); } }); 通过new Thread()的方式,会导致很多弊端,如下: 每一次都通过new Thread的方式,性能差. 线程缺乏统一管理,可能无限制新建线程,相互之间竞争,及可能占用过多系统资源导…
JAVA并发编程——EXECUTORS 线程池的思想是一种对象池的思想,开放一块内存空间,里面存放了众多(未死亡)的线程,池中线程执行调度由池管理器来处理.当有线程任务时,从池中取一个,执行完毕,对象归还给池.这样可以避免反复创建线程对象所带来的性能开销,节省了系统的资源. 代码: http://www.cnblogs.com/chenjingjing/articles/1683745.html 一.固定大小的线程池 newFixedThreadPool  二.单任务线程池 newSingleT…
Java 5+中的Executor接口定义一个执行线程的工具.它的子类型即线程池接口是ExecutorService.要配置一个线程池是比较复杂的,尤其是对于线程池的原理不是很清楚的情况下,因此在工具类Executors面提供了一些静态工厂方法,生成一些常用的线程池,如下所示: - newCachedThreadPool:创建一个可缓存的线程池.如果线程池的大小超过了处理任务所需要的线程,那么就会回收部分空闲(60秒不执行任务)的线程,当任务数增加时,此线程池又可以智能的添加新线程来处理任务.此…
一.线程池什么时候使用,会给我们带来什么好处? 如果很多用户去访问服务器,用户访问服务器的时间是非常短暂的,那么有可能在创建线程和销毁线程上花费的时间会远远大于访问所消耗的时间,如果采用线程池会使线程重复使用大大的提高效率. 在JDK1.5之前就有了线程池的概念,不过需要我们手动的去实现ThreadPool,在API中并没有叫"线程池"这个名字,而是叫做"执行程序". 根据CPU的情况 初始化 固定线程个数的线程池. 获取CPU上有多少个核....int proce…
对javaSE中JDK提供的四种线程池稍作整理   一.Executor   package java.util.concurrent; /** * @since 1.5 * @author Doug Lea */ public interface Executor { /** * Executes the given command at some time in the future. The command * may execute in a new thread, in a poole…
OAuth2 RFC 6749 规范提供了四种基本认证方案,以下针对这四种认证方案以及它们在本实现中的使用方式进行分别说面. 第一种认证方式: Authorization Code Grant (授权码认证) 授权码通过使用授权服务器做为客户端与资源所有者的中介而获得.客户端不是直接从资源所有者请求授权,而是引导资源所有者至授权服务器(由在RFC2616中定义的用户代理),授权服务器之后引导资源所有者带着授权码回到客户端. 在引导资源所有者携带授权码返回客户端前,授权服务器会鉴定资源所有者身份并…
一.线程池什么时候用,有什么好处? “线程池”顾名思义,就是存放线程的池子,这个池子可以存放多少线程取决于采用哪种线程池,取决于有多少并发线程,有多少计算机的硬件资源.使用线程池最直接的好处就是:线程可以重复利用.减少创建和销毁线程所带来的系统资源的开销,提升性能(节省线程创建的时间开销,使程序响应更快). 二.JDK自带4种的线程池(JDK1.5之后) 2.1.固定线程数的线程池(newFixedThreadPool) 这种线程池里面的线程被设计成存放固定数量的线程,具体线程数可以考虑为CPU…
package com.xt.thinks21_2; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.SynchronousQueue; import java.util.concurrent.ThreadFactory; import java.util.concurrent.ThreadPoolExecutor; im…
关于强制类型转换的问题,许多书都讨论过,写的最具体的是C++之父的<C++的设计和演化>. 最好的解决方法就是不要使用C风格的强制类型转换,而是使用标准C++的类型转换符:static_cast,dynamic_cast. 标准C++中有四个类型转换符:static_cast.dynamic_cast.reinterpret_cast.和const_cast. 以下对它们一一进行介绍. 1.const_cast通常被用来将对象的常量刑转换.它也是唯一有此能力的C++-style转型操作符. 使…
参考:http://www.cnblogs.com/xdp-gacl/p/3781056.html 1.当前页:一个属性只能在一个页面中取得,跳转到其他页面无法取得 2.一次服务器请求:一个页面中设置的属性,只要经过了服务器的跳转,则跳转之后的页面可以继续取得. 3.一次回话:一个用户设置的内容,只要是与此用户相关的页面都可以访问(一个回话表示一个人,这个人设置的东西只要这个人不走,就依然有效) 4.上下文中:在整个服务器上设置的属性,所有人都可以访问. 1.pagecontext  2.req…