多线程之线程同步的⽅法(7种)
多线程之线程同步的⽅法(7种)
同步的⽅法:
⼀、同步⽅法
即有关键字修饰的⽅法。由于java的每个对象都有⼀个内置锁,当⽤此关键字修饰⽅法时,内置锁会保护整个⽅法。在调⽤该⽅法前,需要获得内置锁,否则就处于阻塞状态。
注: 关键字也可以修饰静态⽅法,此时如果调⽤该静态⽅法,将会锁住整个类。
⼆、同步代码块
即有关键字修饰的语句块。被该关键字修饰的语句块会⾃动被加上内置锁,从⽽实现同步
代码如:
(){
注:同步是⼀种⾼开销的操作,因此应该尽量减少同步的内容。通常没有必要同步整个⽅法,使⽤代码块同步关键代码即可。
com.xhj.;
/**
* 线程同步的运⽤
* @
*/
class {
class Bank {
int = 100;
int () {
/**
* ⽤同步⽅法实现
* @param money
*/

void save(int money) {
+= money;
/**
* ⽤同步代码块实现
* @param money
*/
void save1(int money) {
(this) {
+= money;
class {
Bank bank;
(Bank bank) {
this.bank = bank;
@
void run() {
for (int i = 0; i < 10; i++) {
// bank.save1(10);
bank.save(10);
.out.(i + “账户余额为:” + bank.());
/**
* 建⽴线程,调⽤内部类
*/
void () {
Bank bank = new Bank();
= new (bank);
.out.(“线程1”);
= new ();
.start();
.out.(“线程2”);
= new ();
.start();

void main( args) {
st = new ();
st.();
=====================================
⽰例加讲解
同步是多线程中的重要概念。同步的使⽤可以保证在多线程运⾏的环境中,程序不会产⽣设计之外的错误结果。同步的实现⽅式有两种java多线程数据同步,同步⽅法和同步块,这两种⽅式都要⽤到关键字。
同步⽅法:给⼀个⽅法增加修饰符之后就可以使它成为同步⽅法,这个⽅法可以是静态⽅法和⾮静态⽅法,但是不能是抽象类的抽象⽅法,也不能是接⼝中的接⼝⽅法。下⾯代码是⼀个同步⽅法的⽰例:
void () {
// do
void () {
// do
线程在执⾏同步⽅法时是具有排它性的。当任意⼀个线程进⼊到⼀个对象的任意⼀个同步⽅法时,这个对象的所有同步⽅法都被锁定了,在此期间,其他任何线程都不能访问这个对象的任意⼀个同步⽅法,直到这个线程执⾏完它所调⽤的同步⽅法并从中退出,从⽽导致它释放了该对象的同步锁之后。在⼀个对象被某个线程锁定之后,其他线程是可以访问这个对象的所有⾮同步⽅法的。
同步块:同步块是通过锁定⼀个指定的对象,来对同步块中包含的代码进⾏同步;⽽同步⽅法是对这个⽅法块⾥的代码进⾏同步,⽽这种情况下锁定的对象就是同步⽅法所属的主体对象⾃⾝。如果这个⽅法是静态同步⽅法呢?那么线程锁定的就不是这个类的对象了多线程之线程同步的⽅法(7种),也不是这个类⾃⾝java多线程数据同步,⽽是这个类对应的java.lang.Class类型的对象。同步⽅法和同步块之间的相互制约只限于同⼀个对象之间多线程之线程同步的⽅法(7种),所以静态同步⽅法只受它所属类的其它静态同步⽅法的制约java多线程数据同步,⽽跟这个类的实例(对象)没有关系。
如果⼀个对象既有同步⽅法,⼜有同步块,那么当其中任意⼀个同步⽅法或者同步块被某个线程执⾏时,这个对象就被锁定了,其他线程⽆法在此时访问这个对象的同步⽅法,也不能执⾏同步块。
关键字⽤于保护共享数据。请⼤家注意“共享数据”,你⼀定要分清哪些数据是共享数据,请看下⾯的例⼦:
class {
void run(){
for(int i=0;i
1. 本站所有资源来源于用户上传和网络,如有侵权请联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系站长处理!
6. 本站不售卖代码,资源标价只是站长收集整理的辛苦费!如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。
7. 站长QQ号码 2205675299
资源库 - 资源分享下载网 » 多线程之线程同步的⽅法(7种)
常见问题FAQ
- 关于资源售价和售后服务的说明?
- 代码有没有售后服务和技术支持?
- 有没有搭建服务?
- 链接地址失效了怎么办?
- 关于解压密码

