您现在的位置是:主页 > news > 建网站带支付链接/seo做关键词怎么收费的

建网站带支付链接/seo做关键词怎么收费的

admin2025/5/18 18:53:29news

简介建网站带支付链接,seo做关键词怎么收费的,哈密做网站,广州网页设计网站/*问题1:生产和消费毫无规律性可言,可能先消费后生产也可能先消费后生产,也就是产生了线程安全问题原因:生产和消费操作了共有的数据,并且有多条对共享数据的操作解决办法:使用同步。问题2:同步…

建网站带支付链接,seo做关键词怎么收费的,哈密做网站,广州网页设计网站/*问题1:生产和消费毫无规律性可言,可能先消费后生产也可能先消费后生产,也就是产生了线程安全问题原因:生产和消费操作了共有的数据,并且有多条对共享数据的操作解决办法:使用同步。问题2:同步…

/*

问题1:生产和消费毫无规律性可言,可能先消费后生产也可能先消费后生产,也就是产生了线程安全问题

原因:生产和消费操作了共有的数据,并且有多条对共享数据的操作

解决办法:使用同步。

问题2:同步以后线程安全问题解决了,但是出现了连续生产和重复消费的问题

解决办法:使用等待唤醒机制

问题3:多生产多消费后遇到生产者和消费者同时生产和消费的问题

解决方法:使用循环方法判断商品状态

问题4:程序出现假死状态

原因:notify每次随机唤醒线程池中的一个线程,有可能是生产者也有可能是消费者,

这时有可能线程池中的线程都处于等待wait状态,程序假死

解决方法:最理想的办法是生产者唤醒消费者(消费者唤醒生产者),但是没有使用的方法,所以只能选择notifyAll()

总结:每次唤醒所有线程,浪费了资源。

wait(),notyfy()和notifyAll属于同步函数的锁,锁在同步代码块中可以是任意对象,所以他们可以属于任意对象,但在同步函数内属于this

*/

//仓库

class Warehouse

{

private String name;

//计数器生产产品的数量

private int count=0;

//定义标记记录产品状态

private boolean flag=false;

//生产方法

public synchronized void set(String name)

{

if(flag)

try{wait();}catch(InterruptedException e){}

this.name=name+"..."+count;

count++;

System.out.println(Thread.currentThread().getName()+"..生产.."+this.name);

flag=true;

notify();

}

//消费方法

public synchronized void get()

{

if(!flag)

try{wait();}catch(InterruptedException e){}

System.out.println(Thread.currentThread().getName()+"...消费..."+this.name);

flag=false;

notify();

}

}

class Producer implements Runnable

{

private Warehouse w;

Producer(Warehouse w)

{

this.w=w;

}

public void run()

{

while(true)

w.set("套餐一");

}

}

class Customer implements Runnable

{

private Warehouse w;

Customer(Warehouse w)

{

this.w=w;

}

public void run()

{

while(true)

w.get();

}

}

class ProducerCumstomer

{

public static void main(String[] args)

{

Warehouse w=new Warehouse();

Producer p=new Producer(w);

Customer c=new Customer(w);

Thread t1=new Thread(p);

Thread t2=new Thread(c);

t1.start();

t2.start();

}

}