1. /*
  2. JAVA对于多线程的安全问题提供了专业的解决方式
  3. 就是同步代码块
  4. synchronized(对象)//这个对象可以为任意对象
  5. {
  6. 需要被同步的代码
  7. }
  8. 对象如同锁,持有锁的线程可以在同步中执行
  9. 没持有锁的线程即使获取CPU的执行权,也进不去
  10. 同步的前提:
  11. 1,必须要有两个或者两个以上的线程
  12. 2,必须是多个线程使用同一个锁
  13. 必须保证同步中只能有一个线程在运行
  14. 好处:解决了多线程的安全问题
  15. 弊端:多个线程需要判断锁,较为消耗资源
  16. */
  17. class Tick implements Runnable
  18. {
  19. private int tick = 50;
  20. Object obj = new Object();//申请一个对象
  21. public void run()
  22. {
  23. while(true)
  24. {
  25. synchronized(obj)
  26. {
  27. if(tick > 0)
  28. {
  29. //try{Thread.sleep(40);}catch(Exception e){}
  30. System.out.println( Thread.currentThread().getName() + " sail --" + tick--);
  31. }
  32. }
  33. }
  34. }
  35. }
  36. class TickDemo
  37. {
  38. public static void main(String []args)
  39. {
  40. Tick t = new Tick();
  41. Thread t1 = new Thread(t);
  42. Thread t2 = new Thread(t);
  43. Thread t3 = new Thread(t);
  44. Thread t4 = new Thread(t);
  45. t1.start();
  46. t2.start();
  47. t3.start();
  48. t4.start();
  49. }
  50. }

Synchronized快的更多相关文章

  1. java synchronized和(ReentrantLock)区别

    原文:http://blog.csdn.net/zheng548/article/details/54426947 区别一:API层面 syschronized使用 synchronized即可修饰方 ...

  2. JMM之synchronized关键字

    对于通讯,涉及两个关键字volatile和synchronized: Java支持多个线程同时访问一个对象或者对象的成员变量,由于每个线程可以拥有这个变量的拷贝(虽然对象及其成员变量分配的内存实在共享 ...

  3. 面试官:说一下Synchronized底层实现,锁升级的具体过程?

    面试官:说一下Synchronized底层实现,锁升级的具体过程? 这是我去年7,8月份面试的时候被问的一个面试题,说实话被问到这个问题还是很意外的,感觉这个东西没啥用啊,直到后面被问了一波new O ...

  4. Java知识总结--CoreJava

    在网上看到的关于Java的知识总结,觉得很受用,分享给大家..... 如果有什么错误,也欢迎指正批评. 1 简述下java基本数据类型及所占位数,java基本数据类型:4类8种 整数类型:byte(1 ...

  5. JAVA关键字Volatile的特性

    一.简述: 关键字Volatile是JAVA虚拟机提供的最轻量级的同步机制,但是它并不容易完全被正确.完整的理解,以致于许多程序员在遇到需要处理多线程数据竞争的时候一律使用synchronized来进 ...

  6. Java并发编程:JMM(Java内存模型)和volatile

    1. 并发编程的3个概念 并发编程时,要想并发程序正确地执行,必须要保证原子性.可见性和有序性.只要有一个没有被保证,就有可能会导致程序运行不正确. 1.1. 原子性 原子性:即一个或多个操作要么全部 ...

  7. Java-JUC(二):Java内存模型可见性、原子性、有序性及volatile具有特性

    1.Java HotSpot JVM运行时数据区 Java内存模型即Java Memory Model,简称JMM.JMM定义了Java 虚拟机(JVM)在计算机内存(RAM)中的工作方式.JVM是整 ...

  8. Java多线程编程核心技术,第二章,对象和变量并发访问

    1,方法内部变量是线程安全的 2,实例变量非线程安全 3,synchronized是锁对象不是锁方法(锁对象是可以访问非synchronized方法,不可访问同个和其他synchronized方法 4 ...

  9. volatile的原理分析

    前言:Volatile作为一个多线程开发中的强有力的轻量级的线程协助工具,在实际编程中随处可见,它比synchronized更加轻量和方便,消耗的资源更少,了解Volatile对后面了解多线程有很重要 ...

随机推荐

  1. apiCloud图片选择、处理、上传模块

    将 apiCloud 开发app的图片上传流程,完整封装成了一个页面,页面处理一些必备的处理库外和css外 ,还需要依赖jquery 库,不过可以不管,页面默认使用cnd引用. 页面使用接口如下:pa ...

  2. OC-02 如何设计类

    1.确认类名 2.类的属性 3.功能行为 例子:类名:person   属性:height   行为:fight 例子:坦克发射3颗炮弹打中2架飞机   类:坦克.炮弹.飞机 把相同属性的对象抽象成一 ...

  3. Salesforce 执行顺序

    在服务器上,Salesforce按以下顺序执行: 1,从数据库加载原始记录或初始化一个用于更新插入(upsert)语句的记录. 2,从请求加载新记录的字段值并覆盖旧的值. 如果请求来自一个标准的UI( ...

  4. JDStatusBarNotification和一些宏定义

    // //  AddTopicViewController.m //  vMeet2 // //  Created by 张源海 on 16/6/30. //  Copyright © 2016年 h ...

  5. hadoop 安装教程 转载

    hadoop2.2安装教程:http://www.aboutyun.com/thread-7684-1-1.html hadoop2.X使用手册1:通过web端口查看主节点.slave1节点及集群运行 ...

  6. jquery实现前台倒计时。应用下单24小时后自动取消该订单

    <html> <head> <meta http-equiv="Content-Type" content="text/html; char ...

  7. easyui from 缓存问题处理

    1 这是ie低版本,缓存了easyui form load事件获取的服务器端数据,给ajax时间加上清除缓存就ok. 找到easyui 中的form load事件  添加cache:false, /* ...

  8. 关于采用github.io搭建个人博客

    创建github技术博客技术攻略 http://blog.csdn.net/renfufei/article/details/37725057/ 搭建一个免费的,无限流量的Blog----github ...

  9. javascript数据属性和访问器属性

    var book={ _year:2004, edition:1};Object.defineProperty(book,"year",{ get:function(){ retu ...

  10. 课堂 表单验证 JavaScript js

    页面加载完才开始执行代码要加上 window.onload = function{ } 获取元素节点 var uesrname = document.getElementById("user ...