资源:
package
ProducerConsumer;
public
class
Goods {
String
name
;
int
count
;
boolean
flag
=
true
;
public
synchronized
void
product(String name)
{
while
(!
flag
)
{
try
{
this
.wait();
}
catch
(InterruptedException e) {
e.printStackTrace();
}
}
this
.
name
= name +
count
++;
System.
out
.println(Thread. currentThread().getName() +
"生产者生产了----"
+
this
.
name
);
flag
=
false
;
this
.notifyAll();
}
public
synchronized
void
consume()
{
while
(
flag
)
{
try
{
this
.wait();
}
catch
(InterruptedException e) {
e.printStackTrace();
}
}
System.
out
.println(Thread. currentThread().getName() +
"消费了---"
+
name
);
flag
=
true
;
this
.notifyAll();
}
}
生产者;
package
ProducerConsumer;
public
class
Producer
implements
Runnable{
Goods
goods
;
public
Producer(Goods g)
{
this
.
goods
= g;
}
public
void
run()
{
while
(
true
)
{
goods
.product(
"商品"
);
}
}
}
消费者
package
ProducerConsumer;
public
class
Consumer
implements
Runnable{
Goods
goods
;
public
Consumer(Goods g)
{
this
.
goods
= g;
}
public
void
run()
{
while
(
true
)
{
goods
. consume();
}
}
}
应用
package
ProducerConsumer;
public
class
AppDemo {
public
static
void
main(String[] args) {
Goods g=
new
Goods();
Producer p =
new
Producer(g);
Consumer c =
new
Consumer(g);
Thread t1 =
new
Thread(p);
Thread t2 =
new
Thread(p);
Thread t3 =
new
Thread(c);
Thread t4 =
new
Thread(c);
t1.start();
t2.start();
t3.start();
t4.start();
}
}