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 ...
随机推荐
- 使用 Apache Superset 可视化 ClickHouse 数据
Apache Superset是一个强大的BI工具,它提供了查看和探索数据的方法.它在 ClickHouse 用户中也越来越受欢迎. 我们将介绍安装 Superset 的 2 种方法,然后展示如何从 ...
- 腾讯TencentOS 十年云原生的迭代演进之路
导语 TencentOS Server (又名 Tencent Linux 简称 Tlinux) 是腾讯针对云的场景研发的 Linux 操作系统,提供了专门的功能特性和性能优化,为云服务器实例中的应用 ...
- laya fgui 超简单的UI框架
FairyGUI 超简单的UI框架 Laya使用fgui的超简单UI框架 使用场景:用于使用fgui进行layaUI开发的程序人员 整个框架分为3个模块,共有4个类: FGUIManager :FGU ...
- 【复习】Listening and Reading Comprehension
短对话 M: Why do you declare the news that you're pregnant on your blog directly? W: I'm so excited tha ...
- VBS脚本编程(10)——编写WMI脚本
WMI介绍 1.WMI是什么? WMI--Windows管理规范(Windows Management instrumentation). 是一项核心的Windows管理技术. 采用统一的.基于开放标 ...
- Linux常见信号介绍
1.信号 首先信号我们要和信号量区分开来,虽然两者都是操作系统进程通信的方式.可以简单的理解,信号是用来通知进程发生了什么需要做什么,信号量一般是用作进程同步(pv操作) 2.常见信号量 (以下数字标 ...
- 技术实践:教你用Python搭建gRPC服务
摘要:gRPC是一个高性能.通用的开源RPC框架,其由Google主要面向移动应用开发并基于HTTP/2协议标准而设计,基于ProtoBuf序列化协议开发,且支持众多开发语言. 本文分享自华为云社区& ...
- PL/SQL插入数据报错:Access violation at address 00413A81 in module 'plsqldev.exe'. Read of address 00000000
前言 今天同事在使用plsql给oracl数据库插入记录时报错:Access violation at address 00413A81 in module 'plsqldev.exe'. Read ...
- 快速简单的了解VLAN(VXLAN)和端口链路类型
目录 前言 一.VLAN是什么? 1.优点 2.为什么推出VXLAN 二.VXLAN又是什么? 1.优点 三.创建VLAN 四.介绍端口链路类型 五.Access 1.特性 六.Trunk 1.特性 ...
- 富文本编辑器之游戏角色升级ing
一.前言 想必大家看到这个标题,心中不禁会浮现几个问题: 什么是富文本编辑器? 富文本编辑器和游戏角色有什么关系? 为什么是升级ing? 什么是富文本编辑器--富文本编辑器集成了格式设置.媒体嵌入.社 ...