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

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. Java基础知识之this关键字知识讲解

    this关键字这里对java中this关键字的基础知识进行讲解,希望对热爱java的小伙伴有帮助!! /* this关键字代表了所属函数的调用者对象. this关键字的作用: 1. 如果存在同名成员变 ...

  2. springboot的restful风格获取请求中携带的参数

    http://localhost:8080/emp/1 有以上请求,我们controller要怎么获取请求中传递的参数1呢? 通过PathVariable注解,如下: @DeleteMapping(& ...

  3. SpringCloud Alibaba实战(5:子模块基本业务开发)

    源码地址:https://gitee.com/fighter3/eshop-project.git 持续更新中-- 在上一节里,我们搭建了一个微服务项目的整体架构,并进行了版本控制. 接下来我们进一步 ...

  4. windows10下JDK9的环境配置

    JDK版本:jdk-9.0.4_windows-x64_bin.exe windows版本:windows10 专业版 64位 需要在系统变量中新建如下3个变量: JAVA_HOME=jdk安装路径J ...

  5. 小伙伴们在催更Spring系列,于是我写下了这篇注解汇总!!

    大家好,我是冰河~~ 由于在更新其他专题的文章,Spring系列文章有很长一段时间没有更新了,很多小伙伴都在公众号后台留言或者直接私信我微信催更Spring系列文章. 看来是要继续更新Spring文章 ...

  6. CENTOS7 安装 SYNCTHING

    本地电脑需要同步远程数据,安装syncthing 测试 1:下载 wget https://github.com/syncthing/syncthing/releases/download/v1.5. ...

  7. 1、java语言概述

    Java基础知识图解 软件开发 软件开发 软件,即一系列按照特定顺序组织的计算机数据和指令的集合.有系统软件和应用软件之分. 人机交互方式 图形化界面(Graphical User Interface ...

  8. NX二次开发-获取WCS标识

    函数:UF_CSYS_ask_wcs() 函数说明:获取工作坐标系对象的标识. 用法: 1 #include <uf.h> 2 #include <uf_csys.h> 3 e ...

  9. Spring Boot WebFlux-07——WebFlux 中 Redis 实现缓存

    第07课:WebFlux 中 Redis 实现缓存 前言 首先,补充下上一篇的内容,RedisTemplate 实现操作 Redis,但操作是同步的,不是 Reactive 的.自然,支持 React ...

  10. MySQL的Limit 性能差?真的不能再用了?

    首先说明一下MySQL的版本: mysql> select version();+-----------+| version() |+-----------+| 5.7.17 |+------- ...