62,614
社区成员
发帖
与我相关
我的任务
分享
package com.zken.pkg;
public class MultiThread implements Runnable {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public void run() {
if (this.getName().equals("1")) {
m1();
}else if(this.getName().equals("2")){
m2();
}
}
private synchronized void m1() {
try {
Thread.sleep(1000 * 10);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("m1::::"+this.getName());
}
private void m2() {
System.out.println("m2::::"+this.getName());
}
public static void main(String[] args) {
MultiThread multiThread = new MultiThread();
Thread thread1 = new Thread(multiThread);
multiThread.setName("1");
thread1.start();
Thread thread2 = new Thread(multiThread);
multiThread.setName("2");
thread2.start();
}
}
public class Bank implements Runnable{
private int money = 20000;
public int getMoney() {
return money;
}
public void setMoney(int money) {
this.money = money;
}
private String matipulate;
public String getMatipulate() {
return matipulate;
}
public void setMatipulate(String matipulate) {
this.matipulate = matipulate;
}
public void run() {
if(matipulate.equals("get"))
getMoney(1000);
if(matipulate.equals("save"))
saveMoney(1000);
}
private int getMoney(int num){
this.money -= num;
System.out.println("from bank get money:" + num);
System.out.println(getMoney());
return num;
}
private void saveMoney(int num){
this.money += num;
System.out.println("to bank save money:" + num);
System.out.println(getMoney());
}
public static void main(String[] args) {
Bank bank = new Bank();
Thread t1 = new Thread(bank);
Thread t2 = new Thread(bank);
bank.setMatipulate("get");
t1.start();
bank.setMatipulate("save");
t2.start();
System.out.println(bank.getMoney());
}
}
楼主运行一下这个程序,多运行几次,你就知道线程之间的执行顺序了。有点类似于多道程序处理机在没有引入进程之前,并发程序的运行会产生间断性、不可再现性和失去封闭性的特点