老师,我自己发现了错误。将“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,什么时候用““,真的看不懂
老师,我这个怎么换主机名啊,而且我的IP地址也不对,我打开不知道怎么自动成这个主机名了
import java.io.IOException; public class TestStopThread implements Runnable{ //生死牌 true:生;false:死 private boolean flag = true; @Override public void run() { System.out.println(Thread.currentThread().getName()+"线程开始"); int i = 0; while(this.flag){ System.out.println(Thread.currentThread().getName()+" "+i++); try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } } System.out.println(Thread.currentThread().getName()+"线程结束"); } //控制生死牌内容的方法 public void stop(){ this.flag = false; } public static void main(String[] args) { System.out.println("主线程开始"); TestStopThread tst = new TestStopThread(); Thread t = new Thread(tst); t.start(); try{ System.in.read(); }catch (IOException e){ e.printStackTrace(); } tst.stop(); System.out.println("主线程结束"); } }
为什么“主程序开始”和“主程序结束”都不打印?
非常抱歉给您带来不好的体验!为了更深入的了解您的学习情况以及遇到的问题,您可以直接拨打投诉热线:
我们将在第一时间处理好您的问题!
关于
课程分类
百战程序员微信公众号
百战程序员微信小程序
©2014-2025百战汇智(北京)科技有限公司 All Rights Reserved 北京亦庄经济开发区科创十四街 赛蒂国际工业园网站维护:百战汇智(北京)科技有限公司 京公网安备 11011402011233号 京ICP备18060230号-3 营业执照 经营许可证:京B2-20212637