生产一个消费一个
package Test;
import java.util.ArrayList;
import java.util.List;
public class Thread123 {
public static void main(String[] args) {
List list =new ArrayList();//仓库对象
Producer producer= new Producer(list);
Consumer consumer = new Consumer(list);
Thread thread1= new Thread(producer);
thread1.setName("生产者线程");
Thread thread2 = new Thread(consumer);
thread2.setName("消费者线程");
thread1.start();
thread2.start();
}
}
class Producer implements Runnable{
private List list;
public Producer(List list) {
this.list = list;
}
@Override
public void run() {
while(true){
synchronized (list){//都操作list所以为list加锁
if(list.size()>0){
try {
list.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
Object o = new Object();
list.add(o);
System.out.println(Thread.currentThread().getName()+"生产了"+o);
list.notifyAll();
}
}
}
}
class Consumer implements Runnable{
private List list;
public Consumer(List list) {
this.list = list;
}
@Override
public void run() {
while(true){
synchronized (list){//都操作list所以为list加锁
if(list.size()==0){
try {
list.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
Object remove = list.remove(0);
System.out.println(Thread.currentThread().getName()+"消费了"+remove);
list.notifyAll();
}
}
}
}
生产十个消费十个
package Test;
import java.util.ArrayList;
import java.util.List;
public class Thread123 {
public static void main(String[] args) {
List list =new ArrayList();//仓库对象
Producer producer= new Producer(list);
Consumer consumer = new Consumer(list);
Thread thread1= new Thread(producer);
thread1.setName("生产者线程");
Thread thread2 = new Thread(consumer);
thread2.setName("消费者线程");
thread1.start();
thread2.start();
}
}
class Producer implements Runnable{
private List list;
public Producer(List list) {
this.list = list;
}
@Override
public void run() {
while(true){
synchronized (list){//都操作list所以为list加锁
if(list.size()==0){
for (int j=1;j<=10;j++){
Object o = new Object();
list.add(o);
System.out.println(Thread.currentThread().getName()+"生产了"+o);
}
list.notifyAll();
}
try {
list.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
}
class Consumer implements Runnable{
private List list;
public Consumer(List list) {
this.list = list;
}
@Override
public void run() {
while(true){
synchronized (list){//都操作list所以为list加锁
if(list.size()>0){
for(int j=1;j<=10;j++){
Object remove = list.remove(0);
System.out.println(Thread.currentThread().getName()+"消费了"+remove);
}
list.notifyAll();
}
try {
list.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
}