知识大全 线程的同步-同步块

Posted 账户

篇首语:沉舟侧畔千帆进,病树前头万木春。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 线程的同步-同步块相关的知识,希望对你有一定的参考价值。

Java线程:线程的同步-同步块  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

    对于同步 除了同步方法外 还可以使用同步代码块 有时候同步代码块会带来比同步方法更好的效果       追其同步的根本的目的 是控制竞争资源的正确的访问 因此只要在访问竞争资源的时候保证同一时刻只能一个线程访问即可 因此Java引入了同步代码快的策略 以提高性能       在上个例子的基础上 对oper方法做了改动 由同步方法改为同步代码块模式 程序的执行逻辑并没有问题     /** * Java线程 线程的同步 同步代码块 * * @author leizhimin : : */ public class Test         public static void main(String[] args)                 User u = new User( 张三 );                 MyThread t = new MyThread( 线程A u );                 MyThread t = new MyThread( 线程B u );                 MyThread t = new MyThread( 线程C u );                 MyThread t = new MyThread( 线程D u );                 MyThread t = new MyThread( 线程E u );                 MyThread t = new MyThread( 线程F u );                 t start();                 t start();                 t start();                 t start();                 t start();                 t start();          class MyThread extends Thread         private User u;         private int y = ;         MyThread(String name User u int y)                 super(name);                 this u = u;                 this y = y;                  public void run()                 u oper(y);          class User         private String code;         private int cash;         User(String code int cash)                 de = code;                 this cash = cash;                  public String getCode()                 return code;                  public void setCode(String code)                 de = code;                  /**          * 业务方法          *          * @param x 添加x万元          */         public void oper(int x)                 try                         Thread sleep( L);                         synchronized (this)                                 this cash += x;                                 System out println(Thread currentThread() getName() + 运行结束 增加 + x + 当前用户账户余额为 + cash);                                                  Thread sleep( L);                  catch (InterruptedException e)                         e printStackTrace();                                   @Override         public String toString()                 return User +                                  code= + code + \\ +                                  cash= + cash +                                  ;            线程E运行结束 增加 当前用户账户余额为 线程B运行结束 增加 当前用户账户余额为 线程D运行结束 增加 当前用户账户余额为 线程F运行结束 增加 当前用户账户余额为 线程C运行结束 增加 当前用户账户余额为 线程A运行结束 增加 当前用户账户余额为 Process finished with exit code       注意     在使用synchronized关键字时候 应该尽可能避免在synchronized方法或synchronized块中使用sleep或者yield方法 因为synchronized程序块占有着对象锁 你休息那么其他的线程只能一边等着你醒来执行完了才能执行 不但严重影响效率 也不合逻辑     同样 在同步程序块内调用yeild方法让出CPU资源也没有意义 因为你占用着锁 其他互斥线程还是无法访问同步程序块 当然与同步程序块无关的线程可以获得更多的执行时间     cha138/Article/program/Java/hx/201311/25673

相关参考

知识大全 使用Synchronized块同步方法

初学Java多线程:使用Synchronized块同步方法  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一

知识大全 使用Synchronized块同步变量

Java多线程初学者指南(12):使用Synchronized块同步变量  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们

知识大全 线程的同步与锁

Java线程:线程的同步与锁  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  一同步问题提出  线

知识大全 多线程的批量线程同步处理方案

JAVA认证:多线程的批量线程同步处理方案  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  多线程

知识大全 多线程的批量线程同步解决方案

  多线程运行时有待处理线程?试试看下面介绍的这个批量线程同步方法吧  在一批线程处理程序中有时必须等到所有线程全部运行完后才能进行下一步任务处理可以采用如下方法解决创建一个锁对象该锁对象提供一个当前

知识大全 Java的多线程-实现多线程及线程的同步

Java的多线程-实现多线程及线程的同步  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  一.实现

知识大全 浅谈Java多线程的同步问题

浅谈Java多线程的同步问题  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  多线程的同步依靠的是

知识大全 Java多线程同步具体实例讲解

Java多线程同步具体实例讲解  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Java多线程同步

知识大全 扩展Delphi的线程同步对象

扩展Delphi的线程同步对象  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  在编写多线程应用程

知识大全 Java多线程共享数据、同步、通信

Java多线程共享数据、同步、通信  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  一线程共享数据