一、懒汉式单例多线程模式

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的单例多线程代码示例(十)的更多相关文章

  1. Servlet 单例多线程【转】

    源地址:Servlet 单例多线程 Servlet如何处理多个请求访问?Servlet容器默认是采用单实例多线程的方式处理多个请求的:1.当web服务器启动的时候(或客户端发送请求到服务器时),Ser ...

  2. Servlet 单例多线程详解(六)

    一.Servlet 单例多线程 Servlet如何处理多个请求访问?Servlet容器默认是采用单实例多线程的方式处理多个请求的:1.当web服务器启动的时候(或客户端发送请求到服务器时),Servl ...

  3. Servlet 单例多线程

    Servlet如何处理多个请求访问? Servlet容器默认是采用单实例多线程的方式处理多个请求的: 1.当web服务器启动的时候(或客户端发送请求到服务器时),Servlet就被加载并实例化(只存在 ...

  4. servlet单例多线程

    Servlet如何处理多个请求访问? Servlet容器默认是采用单实例多线程的方式处理多个请求的: 1.当web服务器启动的时候(或客户端发送请求到服务器时),Servlet就被加载并实例化(只存在 ...

  5. [转]Servlet 单例多线程

    Servlet如何处理多个请求访问? Servlet容器默认是采用单实例多线程的方式处理多个请求的: 1.当web服务器启动的时候(或客户端发送请求到服务器时),Servlet就被加载并实例化(只存在 ...

  6. 单例&多线程

    单例模式,最常见的就是饥饿模式,和懒汉模式,一个直接实例化对象,一个在调用方法时进行实例化对象.在多线程模式中,考虑到性能和线程安全问题,我们一般选择下面两种比较经典的单例模式,在性能提高的同时,又保 ...

  7. C#多线程代码示例

    using System; using System.Threading; namespace MultiThreadDemo { class Program { public static void ...

  8. 单例设计模式代码-bxy

    struct ConnectInfo { const QObject *sender; //发送者 const char *signal_str; //发送信号 const QObject *reci ...

  9. Java多线程代码示例

    package algorithm; class Mythread extends Thread{ String name; public Mythread(String name){ this.na ...

随机推荐

  1. GitHub标星125k!阿里技术官用3个月总结出的24万字Java面试笔记

    最近收到一位粉丝的回馈! 这位粉丝已经成功入职阿里了小编很是羡慕啊! 今天就把这份30w字Java面试笔记给大家分享出来,说来也巧这份资料也是由一位阿里技术官整理出来的这算不算是"搬起石头砸 ...

  2. python pyyaml操作yaml配置文件

    在测试工作中,可以使用yaml编写测试用例,执行测试用例时直接获取yaml中的用例数据进行测试(如:接口自动化测试) 1.什么是yaml 是一种可读的数据序列化语言,通常用于配置文件 非常简洁和强大, ...

  3. 七、AIDE入侵检测

    Aide通过检查数据文件的权限.时间.大小.哈希值等,校验数据的完整性 部署AIDE入侵检测系统 [root@proxy ~]# yum -y install aide         //安装软件包 ...

  4. 五、SELinux安全防护

    rwx 针对用户和组   SELinux  针对程序 targeted:定义网络程序规则   minimum:限制少量软件   mls:限制全部,没定义的全拒绝 [root@proxy ~]# vim ...

  5. 【NX二次开发】Block UI RGB颜色选择器

    属性说明 常规         类型 描述     BlockID     String 控件ID     Enable     Logical 是否可操作     Group     Logical ...

  6. Ajax 和 JSON

    Ajax:异步更新页面的技术,必须在http或者https网络网络协议下使用             1.原生js实现:共4步             2.jQuery:$.ajax(配置对象);   ...

  7. 学会使用Python的threading模块、掌握并发编程基础

    threading模块 Python中提供了threading模块来实现线程并发编程,官方文档如下: 官方文档 添加子线程 实例化Thread类 使用该方式新增子线程任务是比较常见的,也是推荐使用的. ...

  8. Linux基本命令精讲

    一.Shell Linux系统中运行的一种特殊程序 在用户和内核之间充当"翻译官 用户登录 Linux系统时,自动加载一个 Shell程序 Bash是 LinuxShell系统中默认使用的程 ...

  9. kubelet分析-csi driver注册分析-Node Driver Registrar源码分析

    kubernetes ceph-csi分析目录导航 Node Driver Registrar分析 node-driver-registrar是一个sidecar容器,通过Kubelet的插件注册机制 ...

  10. 3.QT屏幕分辨率适配

    需求:qt的窗口.组件.字体需要适配屏幕分辨率. 思路:qt是根据显示器的物理长度或者宽度于分辨率的关系来计算dpi 实现: #if(QT_VERSION >= QT_VERSION_CHECK ...