没定义常量length啊,为什么能用呢,还有为什么能通过shells调用length呢?
老师,我这个问题添加行失败,试了好多次,都不行
老师,我自己发现了错误。将“True”打成了“Ture”
老师,您好!请问print()函数中的end参数默认是end="\n",那最后一行print()中没有写出end呢,也是默认吗?
为什么print(),不用print("\n")?
老师这个地方不太明白,红框里的this已经把参数传到下面的clickBtn里面去了,为啥还要写
this.tabBtn[i].index=i;呢,也没用到啊
老师,这一节的资料PDF文件怎么没有目录啊?这让我们怎么看?
显示不全啊,+/-也没用啊
package com.bjsxt.ls.DuoXianCheng.线程并发; /* 线程并发:生产者和消费者模型 定义一个做馒头和取馒头的类,中间有一个缓冲区。做好的馒头放入缓冲区,取馒头从缓冲区取。 假设缓冲区容量是10,那么当做了十个馒头的时候,做馒头线程就要停止(阻塞)。当缓冲区没有馒头的时候,取馒头线程就要停止(阻塞)。 但是当做馒头线程放入馒头的时候,就要用notify提醒取馒头线程,不要一直处于阻塞状态; 同样当取馒头线程拿馒头的时候,也要提醒做馒头线程要做馒头,不要一直处于阻塞状态; */ //定义馒头类 class ManTou{ private int id; public ManTou(int id) { this.id = id; } public int getId() { return id; } } //定义缓冲区,用数组来存放馒头 class resitor{ private ManTou[] arr =new ManTou[10]; //创建一个长度为10,类型为ManTou的数组 private int index; //定义索引 //定义做馒头方法 //因为做馒头和取馒头都是对同样对象进行操作,所以这两个状态是要互斥,即同步的。所以要用synchronized使得这两个状态处于同步状态 //synchronzied放在方法名上相当于将synchronized(this){}将方法体包裹起来。 public synchronized void makeMantou(ManTou manTou){ //用while做出判断,如果当数组满的时候,就要用wait方法,使得此线程进入阻塞状态,不再生产馒头了; while (this.index == this.arr.length){ try { wait(); /*wait属于Object类只能用在synchronized块中。 此方法执行之后,在本方法所在的对象锁会被阻塞, 其他需要该对象锁的线程就可以继续运行了。*/ } catch (InterruptedException e) { e.printStackTrace(); } } //notify也属于Object类 this.notify();//当放入馒头的时候,要用notify唤醒取馒头的线程,以防拿馒头线程处于阻塞状态 。 //该方法会唤醒处于等待状态队列中的一个线程 this.arr[this.index]=manTou; index++; } //定义取馒头方法 public synchronized ManTou takeMantou(){ //用while判断,当索引为0,即缓冲区没有馒头的时候,就用wait阻塞此状态,不要再去取馒头了; while (this.index==0){ try { wait(); } catch (InterruptedException e) { e.printStackTrace(); } } this.notify();//拿馒头的时候也要唤醒做馒头的线程,以防处于阻塞状态不做馒头了。 this.index--; return this.arr[this.index]; } } //创建做馒头线程 class makeThread extends Thread{ private resitor r; //定义一个类型是resitor的变量r public makeThread(resitor r){ this.r = r; } @Override public void run() { for (int i=1;i<11;i++){ System.out.println("生成第"+i+"个馒头"); ManTou manTou =new ManTou(i); this.r.push(manTou); } } } //创建取馒头线程 class takeThread extends Thread{ private resitor r; //定义一个类型是resitor的变量r public takeThread(resitor r){ this.r = r; } @Override public void run() { for (int i=1;i<11;i++){ ManTou manTou =this.r.pop(); System.out.println("拿走第"+i+"个馒头"); } } } public class ProducerThread { public static void main(String[] args) { resitor tt =new resitor(); new makeThread(tt).start(); new takeThread(tt).start(); } }
老师这是什么原因造成的?
为什么我这边输入中文会出现乱码的情况呢?
老师,如果要在一个文件中调用另一个文件的类和方法是那块的知识?
老师我的怎么无法下载呢?
老师,这里的函数zong()应该返回的是布尔型,也就是说onsubmit=的是一个布尔类型,为何还在返回的zong()之前写return呢?
post不是修改嘛,为啥这里新增也是post不是put呢
老师,视频里整理的笔记呢 左面为啥没有文档了
听的模模糊糊的,真的是看了三四遍都不懂,锁对象中什么时候用this,什么时候用““,真的看不懂
非常抱歉给您带来不好的体验!为了更深入的了解您的学习情况以及遇到的问题,您可以直接拨打投诉热线:
我们将在第一时间处理好您的问题!
关于
课程分类
百战程序员微信公众号
百战程序员微信小程序
©2014-2025百战汇智(北京)科技有限公司 All Rights Reserved 北京亦庄经济开发区科创十四街 赛蒂国际工业园网站维护:百战汇智(北京)科技有限公司 京公网安备 11011402011233号 京ICP备18060230号-3 营业执照 经营许可证:京B2-20212637