e.printStackTrace();
}
messageQueue.take();
}
},“消费者”).start();
}
}
class MessageQueue{
private LinkedList list=new LinkedList<>();
private int capCity;
public MessageQueue(int capCity) {
this.capCity = capCity;
}
public void take(){
synchronized (list){//消费
if(list.isEmpty()){
try {
list.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}else {
Message message = list.removeFirst();
System.out.println(“消费者消费”+message.getId()+" "+message.getVal());
list.notify();//这里注意要用list调用notify 不然锁的对象不同
}
}
}
public void produce(Message message){//生产
synchronized (list){
if(list.size() == capCity){
try {
list.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(“生产者已生产满仓”);
}else {
list.add(new Message(message.getId(),message.getVal()));
System.out.println(“生产者生产”+message.getId()+" "+message.getVal());
list.notify();//这里注意要用list
}
}
}
}
class Message{
private int id;
private int val;
@Override
public String toString() {
return “Message{” +
“id=” + id +
“, val=” + val +
‘}’;
}
public Message(int id, int val) {
this.id = id;
this.val = val;
}
public int getId() {
return id;
}
public int getVal() {
return val;
}
}
实现二:
======
package com.atguigu.thread;
/**
- 线程通信的应用:经典例题: 生产者消费者问题
*/
public class ProduceConsumerTest {
public static void main(String[] args) {
Clerk clerk = new Clerk();
Producer p1 = new Producer(clerk);
Consumer c1 = new Consumer(clerk);
p1.start();
c1.start();
}
}
class Clerk{
private int product = 0;
public void produce() {
while(true){
synchronized (this){
// this.notify();
if(product < 20){
try {
Thread.sleep(10);
} catch (InterruptedException e) {
e.printStackTrace();
}
product++;
System.out.println(Thread.currentThread().getName()+“生产者生产产品”+product);
this.notify();
}else {
try {
wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
}
public void consume() {
while (true) {
synchronized (this) {
// this.notify();
if (product > 0) {
try {
Thread.sleep(10);
} catch (InterruptedException e) {
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:前端)
结尾
学习html5、css、javascript这些基础知识,学习的渠道很多,就不多说了,例如,一些其他的优秀博客。但是本人觉得看书也很必要,可以节省很多时间,常见的javascript的书,例如:javascript的高级程序设计,是每位前端工程师必不可少的一本书,边看边用,了解js的一些基本知识,基本上很全面了,如果有时间可以读一些,js性能相关的书籍,以及设计者模式,在实践中都会用的到。
03/13/H4lCoPEF.jpg" />
结尾
学习html5、css、javascript这些基础知识,学习的渠道很多,就不多说了,例如,一些其他的优秀博客。但是本人觉得看书也很必要,可以节省很多时间,常见的javascript的书,例如:javascript的高级程序设计,是每位前端工程师必不可少的一本书,边看边用,了解js的一些基本知识,基本上很全面了,如果有时间可以读一些,js性能相关的书籍,以及设计者模式,在实践中都会用的到。