时间:2015-08-27 来源:

java多线程(四)synchronized关键字修饰方法 【研发管理】

转载请注明出处:http://blog.csdn.net/xingjiarong/article/details/47907237

class MyThread implements Runnable { private Trans trans; private int num; public MyThread(Trans trans, 2)); a.start(); b.start(); } } 一个线程访问static的synchronized方法时,jpg或psd转html其他的线程还可以访问不是static却被synchronized修饰的方法,网页切图价格例如:

先来为大家介绍一下java中锁的概念.java中的每个对象和每个类都有锁,手机前端外包而且是互斥锁承接网页制作,也就是说只能有一方占有,承接网页制作另一方只能等到对方释放后才能再占有锁.synchronized关键字就是基于java的对象和类的锁的.

每个对象都有自己的锁web切图报价,所以这里synchronized关键字起作用的原因就是因为两个线程用的是同一个对象,网站div+css如果每个线程都有自己的Trans对象符合w3c标准,那么上边的方法将不再适用,符合w3c标准例如我们把Main方法改为下面这样:

一、修饰普通方法 下面来看一下下面这个例子网页外包接活,Trans这个类是在一行中打印当前的线程和0-24这25个数.MyThread这个类接收一个Trans类的对象,网页外包接活在run方法中不停的调用printNum方法.在main方法中web前端制作,创建了一个对象和两个线程,div+css制作这两个线程都使用同一个Trans对象.

public class Trans { public void printNum(int num){ System.out.print(Thread.currentThread());//获取当前运行这个方法的类 for(int i=0;i<25;i++){ System.out.print(i+" "); } System.out.println(); } } class MyThread implements Runnable { private Trans trans; private int num; public MyThread(Trans trans, 1)); Thread b = new Thread(new MyThread(t, 2)); a.start(); b.start(); } } 现在,web切图报价两个线程会同时执行Trans的printNum方法符合w3c标准,因为又是同一个对象的方法,html切图制作所以一定会产生RaceCondition, int num) { this.trans = trans; this.num = num; } public void run() { trans.printNum(num); } } class MyThread1 implements Runnable { private Trans trans; private int num; public MyThread1(Trans trans, int num) { this.trans = trans; this.num = num; } public void run() { while (true) { trans.printNum2(num); try { Thread.sleep(500); } catch (InterruptedException e) { e.printStackTrace(); } } } } public class Test { public static void main(String[] args) { Trans t = new Trans(); Thread a = new Thread(new MyThread(t, 2)); Thread c = new Thread(new MyThread2(t, 2)); a.start(); b.start(); c.start(); } } 首先,web切图报价Trans类增加了两个方法符合w3c标准,一个方法其中一个方法也是用synchronized关键字修饰的方法,符合w3c标准另一个方法是不用synchronized关键字修饰的网页外包接活,在Main方法中创建了三个线程,jpg或psd转html这个三个线程都是同一个Trans对象web前端制作,分别调用三个不同的打印方法.第一个打印方法是一个死循环,手机前端外包一直在打印信息承接网页制作,又是synchronized修饰的方法,承接网页制作一旦获得了对象的锁就不会释放了web切图报价,第二个方法也是synchronized关键字修饰的方法,网站div+css这两个方法不能同时执行符合w3c标准,如果第一个方法获得了锁,符合w3c标准那么第二个方法将永远不能执行网页外包接活,第三个打印方法不是synchronized的,网页外包接活所以锁对它没有任何的影响web前端制作,可以随时的执行.

public class Trans { public synchronized void printNum(int num) { while (true) { System.out.print(Thread.currentThread()); for (int i = 0; i < 25; i++) { System.out.print(i + " "); } System.out.println(); try { Thread.sleep(500); } catch (InterruptedException e) { e.printStackTrace(); } } } public synchronized void printNum1(int num) { System.out.print(Thread.currentThread()); for (int i = 25; i > 0; i--) { System.out.print(i + " "); } System.out.println(); } public void printNum2(int num) { for (int i = 25; i > 0; i--) { System.out.print(num); } System.out.println(); } }

二、修饰静态方法 我们知道静态 方法被整个类拥有,div+css制作所有的类的对象共用这一个方法承接网页制作,那么synchronized关键字修饰static方法所获得的锁是这个类的锁,承接网页制作而不是这个对象的锁.那么一个类的锁和一个类的对象的锁有什么关系呢? 每个类都有一个互斥锁web切图报价,每个类可能会有多个不同的对象,web切图报价每个对象都有一个它自己的对象锁.自然符合w3c标准,类的锁的管辖范围比对象的锁的管辖范围大,html切图制作不同的对象之间的锁互不影响网页外包接活,但是他们都受类的锁的控制,网页外包接活如果一个类的锁被一个线程获得web前端制作,那么这个类的所有的对象都不能访问需要获得类的锁的方法,手机前端外包但是可以访问不需要锁的方法和需要某个对象锁的方法. 例如下面这个例子承接网页制作,就可以很好的说明,div前端切图static方法被synchronized修饰时web切图报价,这个类的所有的对象都是锁的影响. public class Trans { public static synchronized void printNum(int num){ System.out.print(Thread.currentThread()); for(int i=0;i<25;i++){ System.out.print(i+" "); } System.out.println(); } }

版权声明:本文为博主原创文章,web切图报价转载请注明出处符合w3c标准,查看原文章,符合w3c标准请访问:http://blog.csdn.net/xingjiarong

和我们想的一样网页外包接活,方法一和方法三交替执行,jpg或psd转html方法二不会执行.

可以看到web前端制作,打印结果确实是不正确的.那么怎么用synchronized关键字避免这种情况呢?可以将printNum方法的声明改为下面这种:

下面是我的执行结果:

在之前的博客中我们介绍了条件对象和锁对象,手机前端外包两者结合使用才能起到比较好的互斥与同步效果承接网页制作,大家可能觉得有些麻烦,承接网页制作有没有将两者结合起来的工具呢web切图报价,有!java提供了synchronized关键字来实现线程的互斥和同步,网站div+css其达到的效果相当于条件对象和锁对象结合起来的效果.synchronized关键字有两类用法符合w3c标准,一类是修饰方法,符合w3c标准一类是修饰代码块网页外包接活,这篇博客主要介绍一下synchronized关键字修饰方法时的用法.

了解了锁的概念和synchronized修饰方法的用法之后我们可以总结出,网页外包接活两个方法是不是互斥的关键是看两个方法取得的锁是不是互斥的web前端制作,如果锁是互斥的,div+css制作那么方法也是互斥访问的承接网页制作,如果锁不是互斥的,承接网页制作那么不同的锁之间是不会有什么影响的web切图报价,所以这时方法是可以同时访问的.

既然每个对象都只有一把互斥锁,web切图报价那么同一个对象的多个synchronized关键字修饰的方法之间也是无法同时访问的.例如下面的例子:

public static void main(String[] args) { Trans t = new Trans(); Trans t1 = new Trans(); Thread a = new Thread(new MyThread(t, 2)); a.start(); b.start(); } 这里每个线程都有自己的Trans对象网页外包接活,每个线程获得的锁也是自己对象的锁,网页外包接活两个锁之间互不干扰web前端制作,所以synchronized关键字不会起到作用,手机前端外包那么这时应该怎么用synchronized关键字呢?那就是使用synchronized关键字修饰代码块承接网页制作,这种用法我们下篇博客再讲,div前端切图这篇先把synchronized关键字修饰方法的用法讲清楚.

public class Trans { public static synchronized void printNum(int num){ System.out.print(Thread.currentThread()); for(int i=0;i<25;i++){ System.out.print(i+" "); } System.out.println(); } public synchronized void printNum1(int num){ System.out.print(Thread.currentThread()); for(int i=0;i<25;i++){ System.out.print(2+" "); } System.out.println(); } } class MyThread implements Runnable { private Trans trans; private int num; public MyThread(Trans trans, int num) { this.trans = trans; this.num = num; } public void run() { while (true) { trans.printNum1(num); try { Thread.sleep(500); } catch (InterruptedException e) { e.printStackTrace(); } } } } public class Test { public static void main(String[] args) { Trans t = new Trans(); Thread a = new Thread(new MyThread(t, 2)); a.start(); b.start(); } }

public synchronized void printNum(int num){ System.out.print(Thread.currentThread()); for(int i=0;i<25;i++){ System.out.print(i+" "); } System.out.println(); } 这就是用synchronized关键字修饰方法网页外包接活,现在我们再来试一下程序,jpg或psd转html看看还会不会产生RaceCondition.果然不会再产生RaceCondition了web前端制作,是不是比用条件锁方便多了,手机前端外包那么为什么这样就可以了呢?我们来分析一下:之前我们说过承接网页制作,synchronized关键字会获得锁,承接网页制作所以在这里synchronized关键字获得的锁就是传递给线程的那个Trans对象的锁web切图报价,两个线程用的是同一个锁,网站div+css所以当一个线程执行到synchronized修饰的方法时符合w3c标准,这个线程就会获得Trans对象的锁,符合w3c标准并且这个锁是互斥的网页外包接活,所以其他试图想要获得锁的线程都必须等待,网页外包接活直到这个线程释放了锁web前端制作,从而起到了互斥的作用.

点击次数:8341
作者:
web前端行业资讯
Web new NewsList
微软发布WindowsServerBuild17074更新 ,,2018年01月18日凭借一个AI小功能,这款Google应用冲上苹果AppStore榜首 ,,2018年01月18日百度数据可视化实验室正式成立,发布深度学习可视化平台VisualDL ,,2018年01月18日OpenAI开源最新工具包,模型增大10倍只需额外增加20%计算时间 ,,2018年01月18日百度手机输入法8.0正式发布:支持多人语音速记 ,,2018年01月18日CSDN宣布收购TinyMind团队并升级为AI社区 ,,2018年01月18日甲骨文发布补丁修复英特尔芯片漏洞造成的问题 ,,2018年01月18日权威!官方发布CPU熔断和幽灵漏洞防范指引:附补丁下载 ,,2018年01月18日Oracle宣布新的JavaChampions ,,2018年01月18日腾讯加码区块链项目已悄然注册“以太锁”商标 ,,2018年01月18日Fedora28壁纸征集活动现已开幕:将持续至2月13日 ,,2018年01月18日苹果WebKit团队发布Speedometer2.0网页响应测试工具 ,,2018年01月18日百度输入法8.0后天发布:全感官AI输入 ,,2018年01月18日腾讯和乐高合作:共同研发智能玩具、游戏 ,,2018年01月18日HomePod上市日益临近智能音箱市场吸引力越来越大 ,,2018年01月18日3D打印脑组织?科学家正在向这一目标正在前进 ,,2018年01月18日英特尔公布修补漏洞后PC性能数据:8代CPU影响最小 ,,2018年01月18日云存储公司Dropbox秘密提交IPO申请估值超百亿美元 ,,2018年01月18日iPod之父:防手机上瘾无技术难度苹果谷歌应承担责任 ,,2018年01月18日芯片不安全英特尔云客户考虑转用AMD等对手处理器 ,,2018年01月18日2018年Java展望 ,,2018年01月18日区块链有多火?快播流量矿石遭20多万人疯抢 ,,2018年01月18日Intel搞定神经拟态芯片:模拟人类大脑、自主学习 ,,2018年01月18日阿里巴巴发布IoTConnect开放连接协议,盼推动语音互动入口普及 ,,2018年01月18日区块链火了,全球大佬们怎么看? ,,2018年01月18日Facebook正测试新功能主推本地新闻资讯 ,,2018年01月18日在GooglePlay中发现使用Kotlin开发的安卓恶意软件 ,,2018年01月18日VisualStudio201715.6预览版本2,增加新功能 ,,2018年01月18日百度陆奇:AI是5G最好的加速器 ,,2018年01月18日PinterestCEO:不同于谷歌和Facebook,我们走了第三条路 ,,2018年01月18日Phpwind房产系统2014年01月28日Android手机严重漏洞,可造成手机全面瘫痪!【研发管理】2015年08月05日华为校招机试—传送门 【编程语言】2015年02月15日Android自定义Drawable资源引用问题【编程语言】2015年04月24日常用加密算法 【综合】2015年03月10日致佳音:推箱子游戏自动求解算法设计(四)【综合】2015年03月16日WindowsAPI——SHFileOperation——文件操作【编程语言】2015年08月05日新手关于FragmentTransaction(回退栈)容易误解的地方 【编程语言】2014年12月16日Oracle锁1:DML锁 【互联网】2015年01月09日CodeForces398ACards贪心暴力瞎搞【编程语言】2014年11月08日cookie与html5中的localstorage与sessionstorage的异同【编程语言】2015年07月31日站长必备:网站SEO辅助查询工具软2014年01月29日C++学习笔记(十六):对vector进行更多的操作——泛型算法 【互联网】2015年04月29日关于hashchangebroker和statehashable的补充文档2014年01月29日《PNG文件格式》(二)PNG文件格式分析 【综合】2015年05月27日第1篇单例模式【编程语言】2015年02月02日pat(B)1038.统计同成绩学生(哈希) 【编程语言】2015年08月24日JRebel+myeclipse热部署 【编程语言】2015年08月07日关于支持向量机(SVM)一些不得不说的话 【编程语言】2015年02月02日pat(B)1017.A除以B(java大数) 【编程语言】2015年08月24日中小型网络系统总体规划与设计方法(一) 【Web前端】2015年08月03日JavaScript判断判断某个对象是Object还是一个Array2014年01月29日对File.Delete方法的一点看法【编程语言】2015年08月03日atitit.新增编辑功能跟orm的实现attilaxp31【综合】2015年03月03日从1到n的数中总共包含1的个数 【Web前端】2015年04月01日java中文乱码解决之道(二)-----字符编码详解:基础知识+ASCII+GB**【数据库】2015年01月12日SVN-----搭建SVN服务器 【编程语言】2014年11月06日?网页图表Highcharts实践教程之标签组与载入动画 【云计算】2015年06月17日Cygwin的替代品Gow ,,2016年07月24日路由器通信步骤--路由器【移动开发】2015年04月07日
我们保证
We guarantee
> psd效果文件手工切图,保证图片效果最好体积最小利于传输
> 100%手写的HTML(DIV+CSS)编码,绝对符合W3C标准
> 代码精简、css沉余量小、搜索引擎扫描迅速,网页打开快捷
> 应用Css Sprite能够减少HTTP请求数,提高网页性能
> 跨浏览器兼容(IE6、7、8、9,Firefox火狐,Chrome谷歌)