博客出自:http://blog.csdn.net/liuxian13183,转载注明出处! All Rights Reserved !

关于锁,需要在特殊时刻用到,今天就来小分析一把。

public class ThreadTest extends Thread {  
    private int threadNo;  
    public ThreadTest(int threadNo) {  
        this.threadNo = threadNo;  
    }  
    public static void main(String[] args) throws Exception {  
        for (int i = 1; i < 10; i++) {  
           new ThreadTest(i).start();  
            Thread.sleep(1);  
        }  
     }  
   
    @Override  
     public synchronized void run() {  
        for (int i = 1; i < 10000; i++) {  
            System.out.println("No." + threadNo + ":" + i);  
        }  
     }  
 }

这个程序实际上是以ThreadTest对象做为锁,将run方法执行的,实际上是对每个线程都没有加锁,就像一个门有一把锁,但十个都有钥匙,所以线程执行非常乱。
view plaincopy to clipboardprint?
public class ThreadTest2 extends Thread {  
 private int threadNo; private String lock;  
 public ThreadTest2(int threadNo, String lock) {  
  this.threadNo = threadNo;  
     this.lock = lock;   }  
public static void main(String[] args) throws Exception {  
   String lock = new String("lock");  
     for (int i = 1; i < 10; i++) {    
  new ThreadTest2(i, lock).start();  
      Thread.sleep(1);  
     }  
  }    
public void run() {    
 synchronized (lock) {  
      for (int i = 1; i < 10000; i++) {  
       System.out.println("No." + threadNo + ":" + i);  
    }     
 }    
 }  
 }
这个程序是对每个run方法,加一个特定的锁lock,但这个对象是所以线程共用的,就像十个人共用一个厕所的门,只能一个一个来。
关于锁的用途在于,如果拍摄一张照片,只有保存成功才能进行传输;所用保存时,先锁住;保存完毕,锁自然解开,就可以传输查看了。

尼玛呀,吐个槽,CSDN怎么搞的,我把代码贴上,总是给我居中显示,把所有格式都去掉都不行,不知道怎么搞的。

转载于:https://www.cnblogs.com/fengju/archive/2011/11/28/6174515.html

Java基础之synchronized的讲解相关推荐

  1. Java基础之泛型简单讲解(通俗易懂)

    Java基础之泛型简单讲解(通俗易懂) 1. 前言 2. 简单例子对比理解 2.1 未使用泛型例子--ArrayList 2.2 使用泛型的例子 2.2.1 ArrayList 举例 2.2.2 Ha ...

  2. Java基础03:数据类型讲解

    数据类型 强类型预言 要求变量的使用要严格符合规定,所有变量都必须先定义后才能使用 弱类型预言 Java的数据类型分为两大类 基本类型(primitive type) 引用类型(reference t ...

  3. JAVA基础入门(4)—— 标识符、关键字和字面值

    前言 在上一节中,讲到了JAVA开端的一个HelloWorld小程序,其中对代码以及一些细节的知识点做了阐述.本节将继续对JAVA基础入门知识进行讲解演示,分别对JAVA中的标识符.关键字以及字面值进 ...

  4. Java基础知识第一章

    Java基础01:注释 注释不会被执行,是给我们写代码的人看的,书写注释是一个非常好的习惯,平时写代码一定要注意规范 注释的种类 单行注释:一般在最前面加上// public class Hello{ ...

  5. 【狂神说Java笔记】Java基础

    Java基础01:注释 关闭 idea 后再次打开,默认打开上一次关闭时的项目 新建空项目 File --> New --> Project... Empty Project --> ...

  6. filter过滤器_Java过滤器Filter讲解(Java基础)

    Java过滤器Filter讲解(Java基础)    双体的小伙伴们,Java过滤器Filter讲解(Java基础).初学JAVA的的学者们,今天满满的干货,跟随我一起学习吧.      超能就在这里 ...

  7. Java基础18-String类【String类的特点对象个数常用方法】【超详细讲解】

    Java基础-String类[超详细讲解] String类的特点 String在java.lang.String包中 1:特点 (1)String类型不能被继承,因为由final修饰 (2)Strin ...

  8. Java基础代码语法讲解上

    因为最近有多余的时间,可以码字,Java基础虽然真的很基础,但是我学起来又慢又吃力,我想不能忘记自己学语言学不会的样子. 这篇文章我决定写的很零碎,而且想尽量写的很通俗易懂,来锻炼自己说人话的能力. ...

  9. java基础详细讲解

    java基础 java之父:詹姆斯·高斯林(James Gosling) java三大平台版本 J2ME(Java 2 Platform Micro Edition)小型版 是为开发电子消费产品和嵌入 ...

最新文章

  1. mysql filde_备份一个约250G的mysql实例【xtrabackup备份方案对比】
  2. MS UC 2013-0-虚拟机-标准化-部署-2-模板机-制作-4
  3. 国家发改委就数据基础制度征求意见 鼓励互联网企业开放公共属性数据
  4. 千亿化妆品市场规模背后,女人正在失去不化妆的权利
  5. java 课后习题 奇数排前
  6. Java Swing/AWT和GTK混合GUI编程
  7. PHP判断手机横向,H5横竖屏检测的方法
  8. MLP、RBF、SVM网络比较及其应用前景
  9. vscode-更换图标主题VSCode Icons.
  10. 190627每日一句南京创新周;那些绝对不会失败的人,是永远不去尝试的人
  11. 【小程序源码】自带接口短视频去印工具箱
  12. 邮件营销:邮件标题如何变得更有吸引力
  13. linux cpu数理,Linux中的 德·摩根定律
  14. 黄牛落泪!全球显卡价格纷纷跳水,高价囤货滞销
  15. 利用python做词频统计
  16. MySQL从删库到跑路(7):连接查询,用联系的观点看女神与渣男
  17. python数据分析可视化实例-Python数据分析与可视化从入门到精通
  18. 一卡通系统服务器配置,一卡通服务器配置要求
  19. 囚徒困境(双人博弈)
  20. Java 中的Monitor是什么意思?

热门文章

  1. Java Jackson
  2. 3.7 测试时的 Batch Norm
  3. 2.12 向量化的更多例子
  4. 2019年12月中国编程语言排行和薪资分析
  5. wordpress调用 php文件上传,wordpress上传的文件在哪
  6. 什么是分布式数据库中间件
  7. Nutanix:在云转型的道路上飞奔
  8. Redis学习总结(4)——Spring Data操作Redis
  9. java 编程字体_Java 是否可以为整个应用程序设置自定义字体?
  10. java request 克隆_Java 复制HttpServletRequest InputStream的方法 只需2步轻松搞定