关于线程同步.docx
《关于线程同步.docx》由会员分享,可在线阅读,更多相关《关于线程同步.docx(7页珍藏版)》请在三一办公上搜索。
1、关于线程同步Java笔记-关于线程同步 为何要使用同步? java允许多线程并发控制,当多个线程同时操作一个可共享的资源变量时, 将会导致数据不准确,相互之间产生冲突,因此加入同步锁以避免在该线程没有完成操作之前,被其他线程的调用, 从而保证了该变量的唯一性和准确性。 1.同步方法 即有synchronized关键字修饰的方法。 由于java的每个对象都有一个内置锁,当用此关键字修饰方法时, 内置锁会保护整个方法。在调用该方法前,需要获得内置锁,否则就处于阻塞状态。 代码如: public synchronized void save 注: synchronized关键字也可以修饰静态方法,此
2、时如果调用该静态方法,将会锁住整个类 2.同步代码块 即有synchronized关键字修饰的语句块。 被该关键字修饰的语句块会自动被加上内置锁,从而实现同步 代码如: synchronized(object) 注:同步是一种高开销的操作,因此应该尽量减少同步的内容。 通常没有必要同步整个方法,使用synchronized代码块同步关键代码即可。 代码实例: package com.xhj.thread; /* * 线程同步的运用 * * author XIEHEJUN * */ public class SynchronizedThread class Bank private int ac
3、count = 100; public int getAccount return account; /* * 用同步方法实现 * * param money */ public synchronized void save(int money) account += money; /* * 用同步代码块实现 * * param money */ public void save1(int money) synchronized (this) account += money; class NewThread implements Runnable private Bank bank; pub
4、lic NewThread(Bank bank) this.bank = bank; Override public void run for (int i = 0; i 10; i+) / bank.save1(10); bank.save(10); System.out.println(i + 账户余额为: + bank.getAccount); /* * 建立线程,调用内部类 */ public void useThread Bank bank = new Bank; NewThread new_thread = new NewThread(bank); System.out.print
5、ln(线程1); Thread thread1 = new Thread(new_thread); thread1.start; System.out.println(线程2); Thread thread2 = new Thread(new_thread); thread2.start; public static void main(String args) SynchronizedThread st = new SynchronizedThread; st.useThread; 3.使用特殊域变量(volatile)实现线程同步 a.volatile关键字为域变量的访问提供了一种免锁机制
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 关于 线程 同步
链接地址:https://www.31ppt.com/p-3310514.html