四个java类
附上代码(比较简单)用于设计模式课程需要

登录类

package mytest.demo.WebCount;public class Login implements Runnable {// 登录名称private String loginName;public String getLoginName() {return loginName;}public void setLoginName(String loginName) {this.loginName = loginName;}@Overridepublic void run() {// 登录成功后调用单例对象进行计数LazySingleton lazySingleton =LazySingleton.getInstance();lazySingleton.setCount();System.out.println(getLoginName()+"登录成功:"+lazySingleton);//创建窗口,但是加了之后影响了随机性,所以在run函数里加就行了new LoginWindows("用户登录",getLoginName());}
}

加个简单可视化界面

package mytest.demo.WebCount;import java.awt.*;
import java.awt.event.*;
import java.awt.Container;import javax.swing.JFrame;
import javax.swing.JLabel;public class LoginWindows extends JFrame {     //需要继承JFramepublic LoginWindows(String title, String userInfo) {JFrame jf = new JFrame(title);Container conn = jf.getContentPane();    //得到窗口的容器JLabel L1 = new JLabel(userInfo+"已登录");    //创建一个标签 并设置初始内容conn.add(L1);jf.setBounds(200, 200, 300, 200); //设置窗口的属性 窗口位置以及窗口的大小jf.setVisible(true);//设置窗口可见jf.setDefaultCloseOperation(DISPOSE_ON_CLOSE); //设置关闭方式 如果不设置的话 似乎关闭窗口之后不会退出程序}
}

线程安全的单例类,读者可以试一下简单单例类的实现结果是什么样子的

package mytest.demo.WebCount;import java.util.concurrent.atomic.AtomicLong;public class LazySingleton {// 单例对象 ,加入volatile关键字进行修饰private static volatile LazySingleton APP_INSTANCE;// 计数器private AtomicLong count = new AtomicLong(0);// 单例模式必须保证默认构造方法为私有类型private LazySingleton() {}public static LazySingleton getInstance() {if (APP_INSTANCE == null) {// 对类进行加锁,并进行双重检查synchronized (LazySingleton.class) {if (APP_INSTANCE == null) {APP_INSTANCE = new LazySingleton();}}}return APP_INSTANCE;}public AtomicLong getCount() {return count;}public void setCount() {count.addAndGet(1);}
}

主函数

package mytest.demo.WebCount;public class Main {public final static int num = 7;public static void main(String[] args) throws InterruptedException {Thread[] threads = new Thread[num];for (int i = 0; i < num; i++) {Login login = new Login();login.setLoginName("" + String.format("%2s", (i + 1)) + "号用户");threads[i] = new Thread(login);threads[i].start();}for (int i = 0; i < threads.length; i++) {threads[i].join();}// 调用单例对象输出登录人数统计System.out.println("网站共有" + LazySingleton.getInstance().getCount() + "个用户登录");}
}

运行结果:

java使用线程安全的单例模式实现网站计数器相关推荐

  1. java 静态内部类 线程安全问题_单例模式的七种写法, 面试题:线程安全的单例模式...

    http://cantellow.iteye.com/blog/838473 http://meizhi.iteye.com/blog/537563 第一种(懒汉,线程不安全): Java代码  pu ...

  2. Java中线程安全的单例模式

    写出一个单例模式(Singleton Pattern) public final class EagerSingleton {    private static EagerSingleton sin ...

  3. java 线程安全的单例_线程安全的单例模式的几种实现

    单例模式是常见的设计模式之一:目的是节省内存,限制了实例的个数:有利于java GC回收机制. 单例模式的三个好处: 1.控制资源的使用,通过线程同步来控制资源的并发访问 2.控制实例的产生个数,来达 ...

  4. JAVA的多线程、死锁、线程间通信、如何规避死锁、线程安全的单例模式

    主要内容: 多线程 线程和进程间的关系 Java中的线程理论 Java中线程类的实现方式 Java中线程的常用方法 线程安全性问题 线程间通信 线程的死锁 如何规避死锁 线程安全的单例模式 多线程 线 ...

  5. java线程池使用单例模式

    一.线程池不使用单例模式 import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors;publ ...

  6. java 父线程_Java父线程(或是主线程)等待所有子线程退出的实例

    导读热词 实例如下: static void testLock1(){ final AtomicInteger waitCount = new AtomicInteger(30000); final ...

  7. Android之线程安全的单例模式,Adapter注意事项之引用传值

    线程安全的单例模式 单位模式一般写法如下: public static FestivalLab mInstance; private FestivalLab() { } public static F ...

  8. java中断线程_Java中断线程的方法

    使用interrupt()中断线程 当一个线程运行时,另一个线程可以调用对应的Thread对象的interrupt()方法来中断它,该方法只是在目标线程中设置一个标志,表示它已经被中断,并立即返回.这 ...

  9. java面试线程必备知识点,怼死面试官,从我做起

    转载自 java面试线程必备知识点,怼死面试官,从我做起 |--多线程一定好么? cpu密集不好 io密集好 |--如何减少上下文切换: 无锁并发(数据id根据Hash分段).CAS.最少线程 |-- ...

最新文章

  1. 谈谈HTML5中的history.pushSate方法,弥补ajax导致浏览器前进后退无效的问题
  2. 用上这个Python的Docker正式版镜像,你也能成为容器高玩
  3. 插值搜索——本质和二分无异,是利用数据分布的规律来定查找点,其基本假设是数据分布均匀...
  4. mysql正在加载_mysql 数据库基本操作
  5. UnityShader2:Shader与材质
  6. C#3.0学习(1)---隐含类型局部变量和扩展方法
  7. vue横向树结构_vue组件横向树实现代码
  8. 阿里云分布式调度系统-伏羲
  9. 两侧广告HTML,jquery实现两边飘浮可关闭的对联广告
  10. 2022年Google开发者大会纪录
  11. JavaWeb-过滤器Filter学习(三)实现用户的自动登录与IP黑名单过滤
  12. unity3d开发 打飞机小游戏(五)(飞机移动/敌机死亡动画)
  13. 《关键对话》如何高效能沟通之何谓关键对话
  14. python开发板卡驱动开发_树莓派开发板如何驱动LED灯
  15. coap 返回版本信息_CoAP协议学习笔记
  16. VOC数据集制作 滑窗切分图片 单通道标签调色板
  17. texstudio暗色主题2.0
  18. Pythom爬虫之图虫小姐姐图片的爬取:
  19. 机器翻译的评价标准BLEU(Evaluation criteria for machine translation)
  20. mysql的text与tinytext_MySQL中tinytext、text、mediumtext和longtext等各个类型详解

热门文章

  1. orangepi+腾讯云服务器+frp配置内网穿透
  2. 华为:解读下一代视频压缩标准HEVC(H.265)
  3. DNS 标志位简要解析
  4. Exception in thread“main“java.lang.IllegalArgument Exception:Unsupported class file major version 58
  5. 培训班面试一个月入职了一家外包公司(谈谈感悟)
  6. 《阿弥陀佛么么哒》读后感
  7. Linux基础命令(小白教程,宝妈式教程,有手就会)第一期
  8. Linux音频软件:Alsa、OSS和Pulseaudio、ESD、
  9. 何光驰老师-沪师经纪
  10. 荧光法双链DNA检测工具—Pico488 dsDNA 定量试剂盒