class productor extends Thread{
Integer product;
productor(Integer product){
this.product = product;
} public void run(){
synchronized(product){
for(int i = 0;i < 5;i++){
product++;
System.out.println("The product is:" + product);
product.notify();
try{
product.wait();
}catch(Exception e){
e.printStackTrace();
}
}
product.notify();
}
}
}
class Consumer extends Thread{
Integer consumer;
Consumer(Integer consumer){
this.consumer = consumer;
}
public void run(){
synchronized(consumer){
for(int i = 0;i < 5;i++){
System.out.println("The consumer is:" + consumer);
consumer.notify();
try{
consumer.wait();
}catch(Exception e){
e.printStackTrace();
}
}
consumer.notify();
}
}
}
public class test{
public static void main(String args[])
{
Integer i = new Integer(5);
new productor(i).start();
new Consumer(i).start();
}
}
在执行时,总是会报java.lang.IllegalMonitorStateException: current thread not owner请各位高手指点一下
Integer product;
productor(Integer product){
this.product = product;
} public void run(){
synchronized(product){
for(int i = 0;i < 5;i++){
product++;
System.out.println("The product is:" + product);
product.notify();
try{
product.wait();
}catch(Exception e){
e.printStackTrace();
}
}
product.notify();
}
}
}
class Consumer extends Thread{
Integer consumer;
Consumer(Integer consumer){
this.consumer = consumer;
}
public void run(){
synchronized(consumer){
for(int i = 0;i < 5;i++){
System.out.println("The consumer is:" + consumer);
consumer.notify();
try{
consumer.wait();
}catch(Exception e){
e.printStackTrace();
}
}
consumer.notify();
}
}
}
public class test{
public static void main(String args[])
{
Integer i = new Integer(5);
new productor(i).start();
new Consumer(i).start();
}
}
在执行时,总是会报java.lang.IllegalMonitorStateException: current thread not owner请各位高手指点一下
public static void main(String args[]) {
Tickets i = new Tickets(10);
new Productor(i).start();
new Consumer(i).start();
}
}class Tickets {
int number = 0;//票号. int size;//总数. boolean available = false; public Tickets(int size) {
this.size = size;
}
}class Productor extends Thread {
Tickets productor=null; Productor(Tickets productor) {
this.productor = productor;
} public void run() {
while(productor.number<productor.size){
synchronized(productor)
{
System.out.println("The product is:" + (++productor.number));
productor.available = true;
}
}
}
}class Consumer extends Thread {
Tickets consumer = null; int i=0; Consumer(Tickets consumer) {
this.consumer = consumer;
} public void run() {
while(i<consumer.size){
synchronized(consumer)
{
if (consumer.available==true&&i<=consumer.number)
System.out.println("The consumer is:" + (++i));
if (i == consumer.size)
try{sleep(1);}catch(Exception e){}
consumer.available = false;
}
}
}
}