生活随笔
收集整理的這篇文章主要介紹了
Synchronize对象属性改变
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
對象屬性改變
使用一個對象進行加鎖時
如果,對象本身不發生改變,依然是同步的
對象屬性,發生改變,不會影響同步
package com.bjsxt.base.sync006;
/*** 同一對象屬性的修改不會影響鎖的情況**/
public class ModifyLock {private String name;
private int age;
public String
getName() {
return name;}
public void setName(String name) {
this.name = name;}
public int getAge() {
return age;}
public void setAge(
int age) {
this.age = age;}
public synchronized void changeAttributte(String name,
int age) {
try {System.out.println(
"當前線程 : " + Thread.currentThread().getName() +
" 開始");
this.setName(name);
this.setAge(age);System.out.println(
"當前線程 : " + Thread.currentThread().getName() +
" 修改對象內容為: " +
this.getName() +
", "+
this.getAge());Thread.sleep(
2000);System.out.println(
"當前線程 : " + Thread.currentThread().getName() +
" 結束");}
catch (InterruptedException e) {e.printStackTrace();}}
public static void main(String[] args) {
final ModifyLock modifyLock =
new ModifyLock();Thread t1 =
new Thread(
new Runnable() {
@Overridepublic void run() {modifyLock.changeAttributte(
"張三",
20);}},
"t1");Thread t2 =
new Thread(
new Runnable() {
@Overridepublic void run() {modifyLock.changeAttributte(
"李四",
21);}},
"t2");t1.start();
try {Thread.sleep(
100);}
catch (InterruptedException e) {e.printStackTrace();}t2.start();}}
運行
總結
以上是生活随笔為你收集整理的Synchronize对象属性改变的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。