public class ThreadSynchronization {
/**
* @param args
*/
class Bank {
private int account = 100;
public int getAccount() {
return account;
}
/**
*1、 用同步方法实现
*
* @param money
*/
public synchronized void save(int money) {
account += money;
}
/**
* 2、用同步代码块实现
*
* @param money
*/
public void save1(int money) {
synchronized (this) {
account += money;
}
}
}
/*3、采用变量volatile实现线程同步
*
* class Bank {
//需要同步的变量加上volatile
private volatile int account = 100;
public int getAccount() {
return account;
}
//这里不再需要synchronized
public void save(int money) {
account += money;
}
}
* */
/*4、采用 ReenreantLock类实现线程同步
*
* class Bank {
private int account = 100;
//需要声明这个锁
private Lock lock = new ReentrantLock();
public int getAccount() {
return account;
}
//这里不再需要synchronized
public void save(int money) {
lock.lock();
try{
account += money;
}finally{
lock.unlock();
}
}
}
* */
//采用Runable创建线程类
class NewThread implements Runnable {
private Bank bank;
public NewThread(Bank bank) {
this.bank = bank;
}
@Override
//重写run方法
public void run() {
for (int i = 0; i < 10; i++) {
bank.save(10);
System.out.println(i + "账户余额为:" + bank.getAccount());
}
}
}
/**
* 建立线程,调用内部类
*/
public void useThread() {
Bank bank = new Bank();
NewThread new_thread = new NewThread(bank);
System.out.println("线程1");
//创建线程1
Thread thread1 = new Thread(new_thread);
thread1.start();
System.out.println("线程2");
//创建线程2
Thread thread2 = new Thread(new_thread);
thread2.start();
}
public static void main(String[] args) {
// TODO Auto-generated method stub
ThreadSynchronization st = new ThreadSynchronization();
//启动线程
st.useThread();
}
}
四种方法运行什么意思?
题目是什么。