package com.bjpowernode.test;
public class GetMoneyTest {
public static void main(String[] args) {
Account account = new Account(5000);
GetMoneyRun runnable = new GetMoneyRun(account);
new Thread(runnable, "你").start();
new Thread(runnable, "你老婆").start();
}
}
// 账户Mode
class Account {
private int money;
public Account(int money) {
super();
this.money = money;
}
public int getMoney() {
return money;
}
public void setMoney(int money) {
this.money = money;
}
}
//runnable类
class GetMoneyRun implements Runnable {
private Account account;
public GetMoneyRun(Account account) {
this.account = account;
}
@Override
public void run() {
if (account.getMoney() > 3000) {
System.out.println(Thread.currentThread().getName() + "的账户有"
+ account.getMoney() + "元");
try {
Thread.sleep(10);
} catch (InterruptedException e) {
e.printStackTrace();
}
int lasetMoney=account.getMoney() - 3000;
account.setMoney(lasetMoney);
System.out.println(Thread.currentThread().getName() + "取出来了3000元"
+ Thread.currentThread().getName() + "的账户还有"
+ account.getMoney() + "元");
} else {
System.out.println("余额不足3000" + Thread.currentThread().getName()
+ "的账户只有" + account.getMoney() + "元");
}
}
}
public void show() {
synchronized(object){
......
}
}
public void show() {
synchronized(this){
......
}
}
public synchronized void show() {
}
public static synchronized void show() {
}
public static void show() {
synchronized(当前类名.class)
}
@Override
public void run() {
synchronized (account) {
if (account.getMoney() > 3000) {
System.out.println(Thread.currentThread().getName() + "的账户有"
+ account.getMoney() + "元");
try {
Thread.sleep(10);
} catch (InterruptedException e) {
e.printStackTrace();
}
int lasetMoney = account.getMoney() - 3000;
account.setMoney(lasetMoney);
System.out.println(Thread.currentThread().getName()
+ "取出来了3000元" + Thread.currentThread().getName()
+ "的账户还有" + account.getMoney() + "元");
} else {
System.out.println("余额不足3000"
+ Thread.currentThread().getName() + "的账户只有"
+ account.getMoney() + "元");
}
}
}
package com.bjpowernode.test;
public class DeadLock2 {
public static void main(String[] args) {
Object object1=new Object();
Object object2=new Object();
new Thread(new T(object1,object2)).start();
new Thread(new T(object2,object1)).start();
}
}
class T implements Runnable{
private Object object1;
private Object object2;
public T(Object object1,Object object2) {
this.object1=object1;
this.object2=object2;
}
public void run() {
synchronized (object1) {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
synchronized (object2) {
System.out.println("无法执行到这一步");
}
}
};
}
package com.bjpowernode.test;
public class ThreadA {
public static void main(String[] args) {
RunnableTest myRunnanle=new RunnableTest();
new Thread(myRunnanle).start();
synchronized (myRunnanle) {
try {
System.out.println("第一步");
myRunnanle.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("第四步");
}
}
}
class RunnableTest implements Runnable {
public void run() {
try {
Thread.sleep(1);
} catch (InterruptedException e) {
e.printStackTrace();
}
synchronized (this) {
System.out.println("第二步");
notify();
System.out.println("第三步");
}
}
}
// 馒头的实例
class ManTou {
private int id;// 馒头的id
public ManTou(int id) {
this.id = id;
}
public String toString(){
return "ManTou"+id;
}
}
// 篮子的实例,用来放馒头
class Basket{
private int index = 0;// 表示装到第几个了馒头
private ManTou[] manTous = new ManTou[6];// 可以放6个馒头
// 放进去一个馒头
public synchronized void push(ManTou manTou) {
while(index==manTous.length){
try {
System.out.println("篮子满了!");
this.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
System.out.println(Thread.currentThread().getName()+"生产"+manTou.toString());
this.notify();
manTous[index] = manTou;
index++;
}
// 拿一个馒头
public synchronized ManTou pop() {
while (index==0) {
try {
System.out.println("篮子空了!");
this.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
ManTou manTou=manTous[--index];
System.out.println(Thread.currentThread().getName()+"吃了"+manTou.toString());
this.notify();
return manTou;
}
}
// 生产者,生产馒头
class Producer implements Runnable {
private BasketBall basketBall;
public Producer(BasketBall basketBall) {
this.basketBall = basketBall;
}
@Override
public void run() {
for (int i = 0; i < 20; i++) {
ManTou manTou = new ManTou(i);// 生产馒头
basketBall.push(manTou);
try {
Thread.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
// 消费者,拿馒头吃
class Consumer implements Runnable {
private BasketBall basketBall;
public Consumer(BasketBall basketBall) {
this.basketBall = basketBall;
}
@Override
public void run() {
for (int i = 0; i < 20; i++) {
ManTou manTou=basketBall.pop();
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
public class ProducerConsumer {
public static void main(String[] args) {
BasketBall basketBall=new BasketBall();
new Thread(new Producer(basketBall)).start();
new Thread(new Consumer(basketBall)).start();
}
}
机械节能产品生产企业官网模板...
大气智能家居家具装修装饰类企业通用网站模板...
礼品公司网站模板
宽屏简约大气婚纱摄影影楼模板...
蓝白WAP手机综合医院类整站源码(独立后台)...苏ICP备2024110244号-2 苏公网安备32050702011978号 增值电信业务经营许可证编号:苏B2-20251499 | Copyright 2018 - 2025 源码网商城 (www.ymwmall.com) 版权所有