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 ...
随机推荐
- UG_PS Parasolid相关的操作
Open C UF_PS_ask_current_highest_tagUF_PS_ask_current_partitionUF_PS_ask_entity_partitionUF_PS_ask_j ...
- 【NX二次开发】NX内部函数,查找内部函数的方法
[NX二次开发]NX内部函数,libufunx.dll文件中的内部函数 [NX二次开发]NX内部函数,libugui.dll文件中的内部函数 [NX二次开发]NX内部函数,libuifw.dll文件中 ...
- 【MySQL】常用的命令
连接数据库 mysql -u root -pmysql -u root -h 192.168.16.140 -p 创建数据库 create database dbstudents; 查看所有数据库 s ...
- 『动善时』JMeter基础 — 46、使用Badboy工具录制JMeter脚本
目录 1.使用Badboy录制JMeter脚本 2.使用Badboy参数化配置 3.解决"当前页面的脚本发生错误"提示框 4.总结 1.使用Badboy录制JMeter脚本 打开B ...
- (鸡汤文)这一次我终于搞懂了 JavaScript 定时器的 this 指向!
开篇语 忽然有一种感觉,每次学习一个知识点就像是谈一场恋爱:从初次邂逅,到彼此了解,一切都那么的符合恋爱的过程! 如果这个知识点再有点"调皮"的话,那简直是让人欲仙欲死而又不可自拔 ...
- Spring Boot WebFlux-03——WebFlux 整合 MongoDB
第03课:WebFlux 整合 MongoDB 前言 上一课的内容讲解了用 Map 数据结构内存式存储了数据,这样数据就不会持久化,本文我们用 MongoDB 来实现 WebFlux 对数据源的操作. ...
- 有了Java8的“+”真的可以不要StringBuilder了吗
最近在头条上看到一篇帖子,说Java8开始,字符串拼接时,"+"会被编译成StringBuilder,所以,字符串的连接操作不用再考虑效率问题了,事实真的是这样吗?要搞明白,还是要 ...
- 安卓开发(3)—1— Activity
安卓开发(3)-1- Activity 3.1 Activity是什么: 在前面安卓概述中有提到,Activity是Android开发中的四大组件,所有在app里可以看到的东西都是Activity里面 ...
- C#WebService的创建与发布
VS中新建项目-Web-ASP.NET Web应用程序 然后确定,选择空模版就可以了 其中CRMService.asmx是点击项目新建Web服务(asmx) 这样基本的功能就能用了,然后就是发布 点击 ...
- hive学习笔记之四:分区表
欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...