tomcat的单例多线程代码示例(十)
一、懒汉式单例多线程模式
1、创建模拟的servlet生成器
package cn.bjsxt.sing;
import java.util.UUID;
public class LszySingleton {
//servlet不建议使用成员变量
// 给当前的servlet定义成员变量
// String uuid = null;
static LszySingleton instance = null;
// 构造器私有化就是不让通过构造器来不断构建对象
/* public */private LszySingleton() {
System.out.println("HungrySingleton.HungrySingleton()");
}
public static void init(){
System.out.println("LazySingleton.init()");
}
public /*synchronized*/ void service(){
//每当线程调用service方法,都会重新生成uuid号
String uuid = UUID.randomUUID().toString().replace("-", "");
//显示当前线程所有携带的成员uuid
System.out.println(Thread.currentThread().getName()+"---"+uuid);
}
// 对外提供专门的方法来获取对象(实例instance)
//双重线程检验 doublecheck
public static/* synchronized */LszySingleton getInstance() {
if (null == instance) {
// 如果当前的对象实例为空,则创建该对象
synchronized (LszySingleton.class) {
if(null==instance){
instance = new LszySingleton();
init();
}
}
}
return instance;
}
}
2、模拟tomcat服务器
package cn.bjsxt.sing;
public class tomcatrun implements Runnable {
@Override
public void run() {
// TODO Auto-generated method stub
LszySingleton instance = LszySingleton.getInstance();
instance.service();
}
}
3、访问tomcat服务
public static void main(String[] args) {
for (int i = 0; i < 5; i++) {
new Thread(new tomcatrun()).start();
}
}
二、饿汉式单例多线程
1、创建服务器
package cn.bjsxt.zs;
public class HungrySingleton {
//饿汉式单例模式:
static HungrySingleton instance=new HungrySingleton();
private HungrySingleton(){
System.out.println("HungrySingleton.HungrySingleton()"+"创建一个对象");
}
public static HungrySingleton getInstance(){
return instance;
}
}
2、调用
package cn.bjsxt.zs;
public class Tomcat implements Runnable{
public void run(){
//Singleton.getInstance();
HungrySingleton.getInstance();
//System.out.println(LazySingleton.getInstance());
}
public static void main(String[] args) {
for (int i=0; i<5; i++) {
new Thread(new Tomcat()).start();;
}
}
}
tomcat的单例多线程代码示例(十)的更多相关文章
- Servlet 单例多线程【转】
源地址:Servlet 单例多线程 Servlet如何处理多个请求访问?Servlet容器默认是采用单实例多线程的方式处理多个请求的:1.当web服务器启动的时候(或客户端发送请求到服务器时),Ser ...
- Servlet 单例多线程详解(六)
一.Servlet 单例多线程 Servlet如何处理多个请求访问?Servlet容器默认是采用单实例多线程的方式处理多个请求的:1.当web服务器启动的时候(或客户端发送请求到服务器时),Servl ...
- Servlet 单例多线程
Servlet如何处理多个请求访问? Servlet容器默认是采用单实例多线程的方式处理多个请求的: 1.当web服务器启动的时候(或客户端发送请求到服务器时),Servlet就被加载并实例化(只存在 ...
- servlet单例多线程
Servlet如何处理多个请求访问? Servlet容器默认是采用单实例多线程的方式处理多个请求的: 1.当web服务器启动的时候(或客户端发送请求到服务器时),Servlet就被加载并实例化(只存在 ...
- [转]Servlet 单例多线程
Servlet如何处理多个请求访问? Servlet容器默认是采用单实例多线程的方式处理多个请求的: 1.当web服务器启动的时候(或客户端发送请求到服务器时),Servlet就被加载并实例化(只存在 ...
- 单例&多线程
单例模式,最常见的就是饥饿模式,和懒汉模式,一个直接实例化对象,一个在调用方法时进行实例化对象.在多线程模式中,考虑到性能和线程安全问题,我们一般选择下面两种比较经典的单例模式,在性能提高的同时,又保 ...
- C#多线程代码示例
using System; using System.Threading; namespace MultiThreadDemo { class Program { public static void ...
- 单例设计模式代码-bxy
struct ConnectInfo { const QObject *sender; //发送者 const char *signal_str; //发送信号 const QObject *reci ...
- Java多线程代码示例
package algorithm; class Mythread extends Thread{ String name; public Mythread(String name){ this.na ...
随机推荐
- GitHub标星125k!阿里技术官用3个月总结出的24万字Java面试笔记
最近收到一位粉丝的回馈! 这位粉丝已经成功入职阿里了小编很是羡慕啊! 今天就把这份30w字Java面试笔记给大家分享出来,说来也巧这份资料也是由一位阿里技术官整理出来的这算不算是"搬起石头砸 ...
- python pyyaml操作yaml配置文件
在测试工作中,可以使用yaml编写测试用例,执行测试用例时直接获取yaml中的用例数据进行测试(如:接口自动化测试) 1.什么是yaml 是一种可读的数据序列化语言,通常用于配置文件 非常简洁和强大, ...
- 七、AIDE入侵检测
Aide通过检查数据文件的权限.时间.大小.哈希值等,校验数据的完整性 部署AIDE入侵检测系统 [root@proxy ~]# yum -y install aide //安装软件包 ...
- 五、SELinux安全防护
rwx 针对用户和组 SELinux 针对程序 targeted:定义网络程序规则 minimum:限制少量软件 mls:限制全部,没定义的全拒绝 [root@proxy ~]# vim ...
- 【NX二次开发】Block UI RGB颜色选择器
属性说明 常规 类型 描述 BlockID String 控件ID Enable Logical 是否可操作 Group Logical ...
- Ajax 和 JSON
Ajax:异步更新页面的技术,必须在http或者https网络网络协议下使用 1.原生js实现:共4步 2.jQuery:$.ajax(配置对象); ...
- 学会使用Python的threading模块、掌握并发编程基础
threading模块 Python中提供了threading模块来实现线程并发编程,官方文档如下: 官方文档 添加子线程 实例化Thread类 使用该方式新增子线程任务是比较常见的,也是推荐使用的. ...
- Linux基本命令精讲
一.Shell Linux系统中运行的一种特殊程序 在用户和内核之间充当"翻译官 用户登录 Linux系统时,自动加载一个 Shell程序 Bash是 LinuxShell系统中默认使用的程 ...
- kubelet分析-csi driver注册分析-Node Driver Registrar源码分析
kubernetes ceph-csi分析目录导航 Node Driver Registrar分析 node-driver-registrar是一个sidecar容器,通过Kubelet的插件注册机制 ...
- 3.QT屏幕分辨率适配
需求:qt的窗口.组件.字体需要适配屏幕分辨率. 思路:qt是根据显示器的物理长度或者宽度于分辨率的关系来计算dpi 实现: #if(QT_VERSION >= QT_VERSION_CHECK ...