servlet 的生命周期:
1 servlet 容器加载和实例化 servlet 对象
2 servlet 容器调用 init() 方法初始化这个对象,比如获取 web.xml 中的配置参数
调用完 init() 方法,servlet 实例处于 ready 状态
3 servlet 容器调用 service() 方法处理请求。
service() 方法会检查 http 请求的类型(GET、POST),来调用相应的 doGet()、doPost() 方法
service() 方法可以被调用多次,因为初始化之后用户每次访问这个 servlet 都会触发服务器调用 service() 方法
4 如果 servlet 实例长时间未被访问,容器会调用 destroy() 方法,资源释放,回收 servlet 实例
参考:
www.cnblogs.com/lgk8023/p/6427977.html
-------------------------------------------------------------------------------------
java 线程的生命周期:
线程要经过 新建 (New)、就绪 (Runnable)、运行 (Running) 和 死亡 (Dead) 4 种状态。
运行期间还有可能进入 阻塞 (Blocked) 状态。
参考: www.cnblogs.com/sunddenly/p/4106562.html
-------------------------------------------------------------------
实现并启动线程的方法有:
1 写一个类继承 Thread 类,重写 run 方法。用 start() 方法启动线程
2 写一个类实现 Runnable 接口,实现 run 方法。用 new Thread( Runnable r1 ).start() 方法启动线程
或者用线程池启动,用 execute(r1) 方法:
ThreadPoolExecutor executor = new ThreadPoolExecutor(2, 2, 2, TimeUnit.MINUTES,
new ArrayBlockingQueue<Runnable>(100));
executor.execute(r1);
executor.execute(r2);