发布于2022-07-08
java的八种锁情况
示例代码
这八种锁的情况透漏了synchronized到底锁住的是什么
class Phone {
public static synchronized void sendEmail() {
try {
TimeUnit.SECONDS.sleep(3);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
System.out.println("------sendEmail");
}
public synchronized void sendSMS() {
System.out.println("------sendSMS");
}
public void hello(){
System.out.println("-----hello");
}
}
/**
* 8锁案例分析说明demo
* 1 标准访问有a,b两个线程,请问先打印邮件还是短信
* 2 邮件方法暂停三秒钟 请问先打印邮件还是短信
* 3 新增普通方法hello 请问先打印邮件还是hello
* 4 有两个手机对象 先打邮件还是短信
* 5 两个静态同步方法,同一部手机 先打邮件还是短信
* 6 两个静态同步方法,两部手机 先打邮件还是短信
* 7 一个静态同步方法,一个普通同步方法,同一个手机对象 先打邮件还是短信
* 8 一个静态同步方法,一个普通同步方法 两个手机对象 先打邮件还是短信
*/
public class Lock8Demo {
public static void main(String[] args) {
Phone phone = new Phone();
Phone phone2 = new Phone();
new Thread(() -> {
phone.sendEmail();
}, "a").start();
new Thread(() -> {
//phone.sendSMS();
phone2.sendSMS();
}, "b").start();
}
}
示例代码结果解析
1-2解析
一个对象里面如果有多个synchronized方法,某一个时刻内,只要有线程去调用其中的一个synchronized方法了,其他的线程就只能等待,换言之,某一时刻内,只能有唯一的一个线程去访问这些synchronized方法 锁的是当前的对象this 被锁定后,其他的线程都不能进入到当前对象的其它的synchronized方法
3-4解析
普通方法和同步锁无关 压根就不会产生竞争关系 不同对象实例之间也毫无关系,因为普通的同步方法是对对象实例加锁的
5-6解析
三种synchronized锁的内容有一些差别:
对于普通同步方法,锁的是当前的实例对象,通常指this,所有的普通同步方法用的是同一把锁 --- 实例对象本身
对于静态同步方法 锁的是当前类的Class对象 他是一个类锁 所有实例对象用的是同一把类锁
对于同步代码块,锁的是synchronized括号内的对象
7-8解析
各走各的锁 互不干扰 静态方法走类锁 普通同步方法走自己本身实例对象的对象锁
Natalieay fotballdrakter LoganBisc MarshaGop brasil VM Drakt RobinMulv AlizaBeeb mexico VM tröja PhilippDo Kenbahpg real madrid trøjer ManieRabi EleanorLy VM fotbollstrojör VM BernardoE AguedaDun maglia atalanta 2023 CornellSi BeatrisAt coutinho drakt barn Jonnautxv ShelleyFa manchester united tøj PenelopeV DaltonPoi frankrike VM Drakt Linwoodil UlrikeMej fotballdrakter AmyPanton OsvaldoRi arsenal trøje RichieBon GaleLower chelsea drakt FlynnChun CarmeloWi Maglia Chile Mondiali 2022 RosaPanne MabelWind leeds drakt GlindaSer MariaStol maglia italia portiere Beulahyxy SusieMich marseille tröja TraceyMew AguedaDun maglia atalanta 2023 CornellSi CheriRoth arsenal trøje MonteBall Lashawnda manchester united tröja barn GarryKerr Torstenib Kroatien VM 2022 Landsholdstrøje ArielleHa
Ramonitah albanien VM Drakt SteveCawt CaraCastl Maglia Brazil Mondiali 2022 BellaMoul DedraHjee osterrike VM Drakt WoodrowSt EmeryStac Maglia Mexico Mondiali 2022 JaredWess CaraCastl Maglia Brazil Mondiali 2022 BellaMoul OdellWayl psg trøje børn HalinaDup Raymundoq nigeria VM 2022 Drakt Demetrius CathrynHw VM fotbollstrojör VM Maximoffd BeulahMer real madrid fodboldtøj BreannaHo WilsonmtF sydkorea VM tröja DZIEmely CrystalDr maglia manchester united 2023 BarbaraIv AltaLawle maglie svizzera ChiSatter MariaTrap kroatia VM 2022 Drakt AudraSumm NicoleDos polen VM tröja JosefamgH ToniaciY Maglia Slovenia Mondiali 2022 LudieCunn MerrillRe OLKTreydx PrestonBo juventus trøje børn DelBloomf Hannelore psg tröjor LloydFais Temekazlr Maglia Slovenia Mondiali 2022 Rebbecacs StewartBl Maglia Belarus Mondiali 2022 Alexandra
你大概是什么步骤能描述一下吗?设置了nginx的静态链接了吗?
Araofclmh australia vm barn Drakt KaseyTls Kristieif real madrid drakt ThadHilly RhysHorns liverpool tröja barn DedraNett AlissaGal Maglia Chile Mondiali 2022 MilanFait OnitaSass chelsea drakt AlannahEa NaomiLev liverpool tröja barn JuanTregu AdrieneBe Brasilien VM 2022 Landsholdstrøje MilfordNe SimonJsh maglie napoli 2022 JuliaLayt EzraPouli marseille tröja LinoldDi JannieSpr chelsea matchtröja GlendaMes CraigTasm Atalanta Drakt LenaBella LashondaB Maglia Armenia Mondiali 2022 JermaineE RicoLeona danmark VM tröja Shananwsw Gildaohft VM fotbollstrojör VM CaryBrans TrenavcZ Portugal VM 2022 Landsholdstrøje JewelJano Jacquetta Island VM 2022 Landsholdstrøje FreyaYdyr TobiasHer Portugal VM 2022 Landsholdstrøje AzucenaVe BeatriceV australia VM 2022 Drakt VeronaTul MoseButtr Maglia Wales Mondiali 2022 StacyHytt TobiasHer Portugal VM 2022 Landsholdstrøje AzucenaVe
我发现我的评论功能,加载不了头像!朋友圈和相册也加载不了,音乐播放器也不显示,求解!