首页 > 其他分享 >尚硅谷_每日一考_445

尚硅谷_每日一考_445

时间:2023-03-01 21:14:17浏览次数:50  
标签:一考 SingleTon 同步 singleTon 445 调用 线程 监视器 硅谷

445

1.画图说明线程的生命周期,以及各状态切换使用到的方法等

由于某个方法的调用导致状态的变化

https://blog.csdn.net/pange1991/article/details/53860651

2.同步代码共中涉及到同步监视器共享数据,读谈你对同步监视器和共享数据的理解,以及注意点。

多个线程共同操作的数据称为共享数据。

注意点:

1)一个线程操作该数据时,其他线程不能进行操作,否则可能出现安全问题。应当使用同步代码。

2)同步监视器可以是任何一个类的对象

3)多个线程使用同步的话,得保证所用的同步监视器一样

同步代码块结构:

synchronized(/*同步监视器*/){
    //书写操作共享数据的代码,保证执行时是单线程的
    //不能多也不能少
	
}

同步方法中的同步监视器是谁?

是默认的,但我们要了解到底是谁。
(1)静态同步方法:是当前类本身(就是 类名.class) 加载时还没创建对象
(2)非静态方法:是this

3. sleep()和 wait()的区别

img

https://blog.csdn.net/qq_20009015/article/details/89980966

4.写一个线程安全的懒汉式

public class SingleTon{
	private SingleTon(){}
	private static SingleTon singleTon = null;
	//当调用方法时,才创建单例对象
	public static SingleTon getSingleTon(){
		if(singleTon == null){//第一层检查,检查是否有引用对象,如果一个线程获取了实例,则不需要进入同步代码块中了
			synchronized (SingleTon.class){//第一层锁,保证只有一个线程进入。同步代码块使用的锁是单例的字节码文件对象,且只能用这个锁
		if(singleTon == null){ //第二层检查
			singleTon = new SingleTon();
		}
	}
		return singleTon;
	}
}

5.创建多线程有几种方式

4种

1.继承Thread类

2.实现Runnable接口

3.实现Callable接口

4.线程池:响应速度提高了,提高了资源的重用率,便于管理

// 1. 创建线程池
   // 创建时,通过配置线程池的参数,从而实现自己所需的线程池
   Executor threadPool = new ThreadPoolExecutor(
                                              CORE_POOL_SIZE,
                                              MAXIMUM_POOL_SIZE,
                                              KEEP_ALIVE,
                                              TimeUnit.SECONDS,
                                              sPoolWorkQueue,
                                              sThreadFactory
                                              );
    // 注:在Java中,已内置4种常见线程池,下面会详细说明

// 2. 向线程池提交任务:execute()
    // 说明:传入 Runnable对象
       threadPool.execute(new Runnable() {
            @Override
            public void run() {
                ... // 线程执行任务
            }
        });

// 3. 关闭线程池shutdown() 
  threadPool.shutdown();
  
  // 关闭线程的原理
  // a. 遍历线程池中的所有工作线程
  // b. 逐个调用线程的interrupt()中断线程(注:无法响应中断的任务可能永远无法终止)

  // 也可调用shutdownNow()关闭线程:threadPool.shutdownNow()
  // 二者区别:
  // shutdown:设置 线程池的状态 为 SHUTDOWN,然后中断所有没有正在执行任务的线程
  // shutdownNow:设置 线程池的状态 为 STOP,然后尝试停止所有的正在执行或暂停任务的线程,并返回等待执行任务的列表
  // 使用建议:一般调用shutdown()关闭线程池;若任务不一定要执行完,则调用shutdownNow()

参考文章链接:

1.https://blog.csdn.net/u013541140/article/details/95225769

2.https://www.jianshu.com/p/0e4a5e70bf0e

标签:一考,SingleTon,同步,singleTon,445,调用,线程,监视器,硅谷
From: https://www.cnblogs.com/zWANG97/p/17169772.html

相关文章

  • 尚硅谷_每日一考_239+282+309
    2391.构造器的作用是什么?使用中有哪些注意点创建对象、初始化对象结构构造方法名与类名相同和方法并列的结构类一定有构造器不能有返回值也不能加void构造方法只能......
  • 尚硅谷_每日一考_88+111+134+152
    1111.switch后面的表达式可以是哪些数据类型的。byte、short、char、int、枚举类型变量、String类型2.switch-case、if-else、三元运算符使用场景的理解。都表示分支,优......
  • 前端ORA-03113及后台ORA-07445[evaopn3()+135报错的处理
    遇到前端业务SQL执行报错ORA-03113,后台ORA-07445[evaopn3()+135报错;经与MOS上文档的分析对比,ExecutingaQueryWithPeoplesoft,LeadstoORA-07445:exceptionencounter......
  • MyBatisPlus(springBoot版)-尚硅谷
    Pom.xml<?xmlversion="1.0"encoding="UTF-8"?><projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"......
  • 尚硅谷SQL刷题练习
    SQL一:查询累积销量排名第二的商品题目需求查询订单明细表(order_detail)中销量(下单件数)排名第二的商品id,如果不存在返回null,如果存在多个排名第二的商品则需要全部返回。......
  • Win10修改SMB连接(共文件夹)的默认端口(445),访问远程的共享文件夹
    前言基于安全的考虑,服务器端的SMB(共享文件夹)应用通过FRP等工具将SMB应用的445端口映射到了公网IP的其他端口,或者直接修改了SMB的默认端口(可参考最后一节目录)客户端无法像......
  • 硅谷大裁员,千万程序员路在何方?
    在刚刚过去不久的2022年中,“裁员”是全球各大科技公司的关键词之一。动荡的社会环境、经济下行、利率上升是影响此次裁员的关键因素,据埃菲社发布的文章统计,2022年,全球有上......
  • Mybatis-尚硅谷-学习笔记
    https://blog.csdn.net/weixin_45581692/article/details/127508494?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522167619048716800188527496%2522%252C%2522......
  • CMU15-445:Project #2 - B+Tree
    Project#2-B+Tree本文是对CMU15-445课程第二个项目的一个粗略总结和翻译。仅供个人(M1kanN)复习使用。Overview第二个项目是实现一个在你的数据库系统中的索引。......
  • 在 Windows 下关闭135/139/445端口的方法
    一、关闭​​135端口​​第一步运行dcomcnfg,打开“组件服务”→“计算机”,在“我的电脑”上右键点击,选“属性”;然后点默认属性,把“在此计算机上启用分布式COM(E)”的勾去掉,接......