知识大全 线程的同步-同步块
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相关参考
初学Java多线程:使用Synchronized块同步方法 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一
Java多线程初学者指南(12):使用Synchronized块同步变量 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们
Java线程:线程的同步与锁 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 一同步问题提出 线
JAVA认证:多线程的批量线程同步处理方案 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 多线程
多线程运行时有待处理线程?试试看下面介绍的这个批量线程同步方法吧 在一批线程处理程序中有时必须等到所有线程全部运行完后才能进行下一步任务处理可以采用如下方法解决创建一个锁对象该锁对象提供一个当前
Java的多线程-实现多线程及线程的同步 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 一.实现
浅谈Java多线程的同步问题 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 多线程的同步依靠的是
Java多线程同步具体实例讲解 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! Java多线程同步
扩展Delphi的线程同步对象 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 在编写多线程应用程
Java多线程共享数据、同步、通信 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 一线程共享数据