try {
代码块
} catch (InterruptedException e) {
e.printStackTrace();//接收异常
}
异常处理是为了让代码块变得更健壮,异常处理不是修复错误
异常处理就是抛出一个异常当有这个异常时跳过这个异常继续执行下面的代码
不会因为一个异常使得整个代码死亡
可以尝试做一做以下练习
package thread;
public class JavDemo3 {
public static void main(String[] args) {
product pt = new product();
producer pc = new producer(pt);
sellers ss = new sellers(pt);
Thread th1 = new Thread(pc);
Thread th2 = new Thread(ss);
th1.start();
th2.start();
}
}
class product{
private String name;
private Integer id;
private boolean flag;
public boolean isFlag() {
return flag;
}
public void setFlag(boolean flag) {
this.flag = flag;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
}
class producer implements Runnable{
private product p;
private Integer count;
public producer(product p) {
this.p = p;
}
@Override
public void run() {
while (true){
synchronized (p){
if (p.isFlag()){
try {
p.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}else{
p.setName("Beautiful girlfriend");
p.setId((++count));
System.out.println(Thread.currentThread().getName()+"生产:"+p.getName()+","+p.getId());
p.setFlag(true);
p.notify();
}
}
}
}
}
class sellers implements Runnable{
private product p;
public sellers(product p) {
this.p = p;
}
@Override
public void run() {
while (true){
synchronized (p){
if (!p.isFlag()){
try {
p.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}else{
System.out.println(Thread.currentThread().getName()+"拐卖:"+p.getName()+","+p.getId());
p.setFlag(false);
p.notify();
}
}
}
}
}


