学习笔记,仅供参考,有错必纠


文章目录

  • 多线程
    • 单例设计模式
      • 饿汉式
      • 懒汉式
      • 第三种格式
    • Timer类
    • 线程的五种状态

多线程

单例设计模式

单例设计模式,即保证类在内存中只有一个对象,如何保证类在内存中只有一个对象呢:

  • 控制类的创建,不让其他类来创建本类的对象;
  • 在本类中定义一个本类的对象;
  • 提供本类对象的公共访问方式。

饿汉式

class Singleton {//1,私有构造方法,其他类不能访问该构造方法了private Singleton(){}//2,创建本类对象private static Singleton s = new Singleton();//3,对外提供公共的访问方法public static Singleton getInstance() {             //获取实例return s;}
}

懒汉式

class Singleton {//1,私有构造方法,其他类不能访问该构造方法了private Singleton(){}//2,声明一个引用private static Singleton s ;//3,对外提供公共的访问方法public static Singleton getInstance() {               //获取实例if(s == null) {//线程1等待,线程2等待s = new Singleton();}return s;}
}

第三种格式

class Singleton {//1,私有构造方法,其他类不能访问该构造方法了private Singleton(){}//2,声明一个引用public static final Singleton s = new Singleton();
}
  • 举个例子

单例设计模式:

package com.guiyang.restudy3;public class D5GetThreadObject {public static void main(String[] args) {Singleton s1 = Singleton.s;Singleton s2 = Singleton.s;System.out.println(s1 == s2);}
}
class Singleton {//1,私有构造方法,其他类不能访问该构造方法了private Singleton(){}//2,声明一个引用public static final Singleton s = new Singleton();
}

控制台输出:

true

Timer类

Timer类是一种线程设施,用于安排以后在后台线程中执行的任务。可安排任务执行一次,或者定期重复执行。

  • 构造方法
public Timer()

创建一个新计时器,相关的线程不作为守护程序运行。

  • 方法
public void schedule(TimerTask task, Date time)

安排在指定时间执行指定任务。如果此时间已过去,则安排立即执行该任务。

public void schedule(TimerTask task, Date firstTime, long period)

安排指定任务指定时间开始进行重复的固定延迟执行。以近似固定的时间间隔(由指定的周期分隔)进行后续执行。

  • 举个例子

JAVA代码:

package com.guiyang.restudy3;import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;public class D5GetThreadObject {public static void main(String[] args) throws InterruptedException {Timer t = new Timer();//在指定时间安排指定任务//第一个参数,是安排的任务,第二个参数是执行的时间,第三个参数是过多长时间再重复执行t.schedule(new MyTimerTask(), new Date(120, 8, 26, 10, 13, 0), 3000);while(true) {Thread.sleep(1000);System.out.println(new Date());}}
}/*public Date(int year,int month,int day)已过时。 使用构造方法 Date(long date) 替代 构造一个使用给定 year、month 和 day 初始化的 Date 对象。
如果给定参数超出范围,则结果是不确定的。 参数:
year - year 减去 1900,它必须是 0 到 8099 之间的数。(注意,8099 是由 9999 减去 1900 得到的。)
month - 0 到 11 之间的数
day - 1 到 31 之间的数
hrs - 0-23之间的小时数
min - 0-59之间的分钟数
sed - 0-59之间的秒数*/class MyTimerTask extends TimerTask {@Overridepublic void run() {System.out.println("背6级单词!!!");}
}

线程的五种状态

第三次学JAVA再学不好就吃翔(part117)--单例设计模式相关推荐

  1. 第三次学JAVA再学不好就吃翔(part107)--字符流的拷贝

    学习笔记,仅供参考,有错必纠 文章目录 IO流 字符流的拷贝 拷贝纯文本文件 注意事项 自定义字符数组的拷贝 IO流 字符流的拷贝 拷贝纯文本文件 zzz.txt: 安徽财经大学 JAVA代码: pa ...

  2. 第三次学JAVA再学不好就吃翔(part106)--字符流

    学习笔记,仅供参考,有错必纠 文章目录 IO流 字符流输入流FileReader 字符流是什么 FileReader类构造方法 举个例子 字符流输出流FileWriter FileWriter构造方法 ...

  3. 第三次学JAVA再学不好就吃翔(part46)--Scanner类

    学习笔记,仅供参考 文章目录 Scanner类 Scanner获取数据出现的问题 Scanner类 概述 Scanner是在java.util包下的一个类,使用该类时我们需要导包.这个类被final修 ...

  4. 第三次学JAVA再学不好就吃翔(part109)--LineNumberReader类

    学习笔记,仅供参考,有错必纠 IO流 LineNumberReader类 该类继承自java.io.BufferedReader,该类可以跟踪行号的缓冲字符输入流.此类定义了方法 setLineNum ...

  5. 第三次学JAVA再学不好就吃翔(part108)--带缓冲的字符流

    学习笔记,仅供参考,有错必纠 文章目录 IO流 带缓冲的字符流 BufferedReader和BufferedWriter readLine和newLine方法 IO流 带缓冲的字符流 Buffere ...

  6. 第三次学JAVA再学不好就吃翔(part7)--基础语法之运算符

    学习笔记,仅供参考 文章目录 JAVA基础语法 运算符 算数运算符 算术运算符 ++和-- 赋值运算符 关系运算符 JAVA基础语法 运算符 什么是运算符 就是对常量和变量进行操作的符号. 运算符的分 ...

  7. 第三次学JAVA再学不好就吃翔(part115)--多线程

    学习笔记,仅供参考,有错必纠 文章目录 多线程 多线程引入 什么是线程 多线程并行和并发的区别 Java程序运行原理 多线程的实现方式 多线程实现的方式1 多线程程序实现的方式2 以上两种实现方式的区 ...

  8. 第三次学JAVA再学不好就吃翔(part113)--对象操作流

    学习笔记,仅供参考,有错必纠 对象操作流 对象操作流可以将一个对象写出, 或者读取一个对象到程序中,也就是执行了序列化和反序列化的操作. 举个例子 先构造一个Role类: package com.gu ...

  9. 第三次学JAVA再学不好就吃翔(part104)--flush和close

    学习笔记,仅供参考,有错必纠 flush和close flush方法 对于写出数据来说,当缓冲区满了之后,缓冲区中的数据会自动写出,但是当缓冲区没有满时,调用flush方法,那么缓冲区就会被刷新,数据 ...

最新文章

  1. 【优秀作业】粒子群算法
  2. SpringMVC,SpringBoot文件下载
  3. 互联网企业安全高级指南3.7.2 SDL落地率低的原因
  4. 自动控制原理第二版王建辉_王建辉自动控制原理配套题库名校考研真题课后答案资料课后习题章节题库模拟试题...
  5. eventsource前台怎么接收一个对象数据_Java开发经验总结篇(1)——数据保存的整洁方法...
  6. 游戏软件性能测试怎么做?常规测试知识要点总结
  7. WebX框架的页面授权
  8. springboot 上传文件解析入库_springboot上传文件的访问
  9. 如何将数据渲染到页面上?
  10. 微信开发的时候自定义菜单
  11. Qt5.2.1 + VS2010安装错误(Unable to find a Qt build)
  12. 机器学习项目简历收集册-----机器学习(仅供参考)
  13. sql server2000远程访问
  14. js laypage mysql_laypage 物理分页与逻辑分页实例
  15. GMT、UTC、DST、CST时区代表的意义
  16. 11尺寸长宽 iphone_iPhone11屏幕尺寸
  17. ETF基金的优点和缺点
  18. Segment Routing入门
  19. 计算机上硬盘显示不出来怎么办,加装硬盘不显示怎么办_新硬盘装上去了但是没显示这么解决...
  20. ipv6地址分类 java_IPv6的本地联网地址计算方法详解

热门文章

  1. C4.5-Release8中Ross Quinlan对缺失值的处理
  2. python链式赋值与C++赋值的结果比较与分析
  3. 美国总统就职演说词汇分布图
  4. java线程太多卡顿_性能优化之卡顿延迟
  5. 常用的正则表达式的运用--学习笔记(二)
  6. Linux环境下服务器 Tomcat war包部署步骤
  7. 专家称 AI 可以在 120 年内接管人类的所有工作
  8. Koa / Co / Bluebird or Q / Generators / Promises / Thunks 的相互关系
  9. 寻找数组中出现次数超过一半的数字
  10. JavaScript类的几种写法