java 10 -01 List接口 多线程 生产消费关系

集合类:List<Integer>也可以叫接口

    <> 泛型,集合里面放的什么类型的对象。

int ->  对象的包装类Integer   在成员变量中声明一个int类型的属性,让它有对象的行为。

集合里面只能放对象,不能放基本类型。

new一个实现类

List<Integer> list =new LinkedList<Integer>

可以放任意数量影替的数量,长度不固定,想放多少就放多少

数组 length 是属性

集合 size 是方法

class TenProductCustor{
public static void main(String[] agrs) {
//创建集合
//new LinkedList<Integer>()构造函数//集合 //泛型
java.util.List<Integer> list =new java.util.LinkedList<Integer>();
//向集合中添加元素(对象)
list.add(new Integer(1));
list.add(new Integer(2));
list.add(new Integer(3));
list.add(new Integer(4));
System.out.println(list.size());
//先判断是否为空的 false 开始取
System.out.println(list.isEmpty());
System.out.println(list.remove(0));
System.out.println(list.remove(0));
System.out.println(list.remove(0));
System.out.println(list.remove(0));
//T取完后了  是空的TRUE
System.out.println(list.isEmpty());

}

}

----------------------------------------------------------------------------

消费者与顾客

class TenProductCustor2{
public static void main(String[] agrs) {
java.util.List<Integer> list =new java.util.LinkedList<Integer>();
Productor p =new Productor(list);
Cusumer c =new Cusumer(list);
p.start();
c.start();

}

}

//生产者

class Productor extends Thread{
//创建一个集合
private java.util.List<Integer> list;
public Productor(java.util.List<Integer> list){
this.list=list;
}

public void run(){
int i =1;
while(true){
list.add(new Integer(i));
System.out.println("生产了:"+ i);
i++;
}
}
}
//消费者
class Cusumer extends Thread{
private java.util.List<Integer> list;
public Cusumer(java.util.List<Integer> list){
this.list=list;
}

public void run(){
while(true){
if(!list.isEmpty()){
int no = list.remove(0);
System.out.println("消费了====》"+ no);
}

}
}
}

--------------------------------------------------------

当为互斥关系时 代码如下

class TenProductCustor3{
public static void main(String[] agrs) {
MyList mylist =new MyList();
Productor p =new Productor(mylist);
Cusumer c =new Cusumer(mylist);
p.start();
c.start();


}

}

//用类封装集合,同步要么往里放,要么取。
class MyList{
private int MAX =100;
private java.util.List<Integer> list =new java.util.LinkedList<Integer>();

public void addLast(Integer i){

//同步代码块 ,如果库存小于最大数,添加,直接return
//如果大于最大数 直接从锁里面出来了。
while(true){
synchronized(list){
if(list.size()<MAX){
list.add(i);
System.out.println("生产 Size" +list.size());
return;
}
}
}
}
//上面已经上锁即没有机会了
public Integer removeFirst(){
while(true){
synchronized(list){
if(!list.isEmpty()){
System.out.println("消费 Size" +list.size());
return list.remove(0);
}
}

//x休眠一下效果更明晰
try{
Thread.sleep(2000);
}
catch(Exception e){

}
}
}

}


//生产者

class Productor extends Thread{
//创建一个集合
private MyList mylist;
public Productor(MyList mylist){
this.mylist=mylist;
}

public void run(){
int i =1;
while(true){
mylist.addLast(i);
System.out.println("生产了" +i);
i++;
}
}
}
//消费者
class Cusumer extends Thread{
private MyList mylist;
public Cusumer(MyList mylist){
this.mylist=mylist;
}

public void run(){
while(true){
int no =mylist.removeFirst();
System.out.println("消费了=====》》" +no);
}
}
}

原文地址:https://www.cnblogs.com/simly/p/10531567.html