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. java第四次作业

    (一)一个字节 import java.io.*; /** * 实现文件复制 * @author Administrator * */public class CopyFile { public st ...

  2. Java图形化用户界面(GUI)笔记(一)介绍

    一.布局 1.组件 以图形化的方式显示在屏幕上的,和用户进行交互的对象,就叫做组件. 组件包括:菜单.标签.文本框(密码框).滚动条.单选.复选.按钮等等. 2.容器 组件不能独立的显示出来,只能将组 ...

  3. Supervisor重新加载配置

    Supervisor重新加载配置启动新的进程 liaojie 发布于 1年前,共有 0 条评论 一.添加好配置文件后 二.更新新的配置到supervisord supervisorctl update ...

  4. Autumn is a second spring when every leaf is a flower.

    Autumn is a second spring when every leaf is a flower. 秋天即是第二个春天,每片叶子都是花朵.——阿尔贝·加缪

  5. CAS 集群部署session共享配置

    背景 前段时间,项目计划搞独立的登录鉴权中心,由于单独开发一套稳定的登录.鉴权代码,工作量大,最终的方案是对开源鉴权中心CAS(Central Authentication Service)作适配修改 ...

  6. Java Web学习路线

    2016-08-22的早上,本是一个很平静的早上,坐在去往公司的公交车上想到了很多之前上学时的点点滴滴,回想起来还真的是耐人寻味啊,当初青春的懵懂,当初的冲动,当初的做事不考虑后果! 也正是这耐人寻味 ...

  7. IOS UIImageView的contentMode属性

    红框表示imageView的frame,下面的图片是原图大小UIViewContentModeScaleToFill,       默认,对图片进行拉伸处理(不是按比例),是充满bouns UIVie ...

  8. 日志管理log4js的配置

    以前就是在app.js 直接用,今天把它抽出来了. log4js.json { "appenders": [ { "type":"console&qu ...

  9. Redis缓存连接池管理

    import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.util.Assert;import ...

  10. CSS3简单的小技巧:linear-gradient切角画册

    关于linear-gradient的语法就不多做介绍了网上到处都是,下面看个小例 我们先做一个渐变,使其让他旋转, <div class="example"> < ...