老师,同步代码块中 wait()方法及 notify() 方法是用 this 对象调用的,那这个对象到底是哪个类下的对象?是 缓冲区 BufferZone 类下实例化的对象嘛?
// 馒头类 class SteamBread { private int id; public SteamBread(int id) { this.id = id; } public int getId() { return this.id; } } // 缓冲区类 class BufferZone { // 存放馒头的盒子 private SteamBread[] sb = new SteamBread[10]; // 定义操作盒子的索引 private int index; // 生产者方法馒头 public synchronized void put(SteamBread steamBread) { while (this.index >= this.sb.length) { try { this.wait(); // this 引用当前类的实例,所以对应的对象为 BufferZone 类下实例化的对象 bz } catch (InterruptedException e) { e.printStackTrace(); } } this.notify(); this.sb[this.index] = steamBread; this.index++; } // 取馒头 public synchronized SteamBread take() { while (this.index == 0) { try { this.wait(); } catch (InterruptedException e) { e.printStackTrace(); } } this.notify(); this.index--; return this.sb[this.index]; } } // 生产者线程类 class ProducerThread extends Thread { private BufferZone bz; public ProducerThread(BufferZone bz) { this.bz = bz; } @Override public void run() { for (int i = 0; i < 10; ++i) { System.out.println("生产馒头:" + i); SteamBread sb = new SteamBread(i); this.bz.put(sb); } } } // 消费者线程类 class ConsumerThread extends Thread { private BufferZone bz; public ConsumerThread(BufferZone bz) { this.bz = bz; } @Override public void run() { for (int i = 0; i < 10; ++i) { SteamBread sb = this.bz.take(); System.out.println("消费馒头:" + i); } } } // 测试生产者消费者模式 public class ProducerConsumerModel { public static void main(String[] args) { BufferZone bz = new BufferZone(); new ProducerThread(bz).start(); new ConsumerThread(bz).start(); } }
可以解释一下这里是什么意思嘛
老师这几个章节怎么没有练习啊那怎么巩固新学的知识啊
不是有相对路径了么,为什么还要找到绝对路径
<a href="" name="#1" >23333 </a>
<hr><hr><hr><hr><hr><hr><hr><hr><hr><hr><hr><hr><hr><hr><hr><hr><hr><hr><hr><hr><hr><hr><hr><hr><hr><hr><hr><hr><hr><hr><hr><hr><hr><hr><hr><hr><hr><hr><hr><hr><hr><hr><hr><hr><hr><hr><hr><hr><hr><hr><hr><hr><hr><hr><hr><hr><hr><hr><hr><hr><hr><hr><hr><hr><hr><hr><hr><hr><hr><hr><hr><hr><hr><hr><hr><hr><hr><hr><hr><hr><hr><hr><hr><hr><hr><hr><hr><hr><hr><hr><hr><hr><hr><hr><hr><hr><hr><hr><hr><hr><hr><hr><hr><hr><hr><hr><hr><hr><hr><hr><hr><hr><hr><hr><hr><hr><hr><hr><hr><hr>
<a href=""name="1"> 33333</a>
老师,这里实现的功能是点击下面33333能跳回上面的23333。那么能不能在同一个键位实现点击下面的33333跳回上面23333。还是说必须要加另外的按键才能实现。
老师spring中会不会有多个结果可以被autowired呢? 这种情况@Autowired是怎么工作的
老师,func.count()这个方法是
这节课声音有问题吗 基本啥都听不清
// 程序员奖金类 class ProgrammerBonus { private String name; public ProgrammerBonus(String name) { this.name = name; } // 领取奖金 public void TakeBonus () { // 不仅可以用 ProgrammerBonus.class,用 Bonus.class 也行 synchronized (Bonus.class) { try { System.out.println(this.name + "被领导表扬"); Thread.sleep(3000); System.out.println(this.name + "拿到奖金"); Thread.sleep(2000); System.out.println(this.name + "话不多说,一切尽在行动中"); Thread.sleep(3000); System.out.println(this.name + "离开办公室"); Thread.sleep(4000); } catch (InterruptedException e) { e.printStackTrace(); } } } } // 领取奖金线程 class Bonus extends Thread { private ProgrammerBonus pb; public Bonus(ProgrammerBonus pb) { this.pb = pb; } @Override public void run() { this.pb.TakeBonus(); } } public class ThreadConflictTest03 { public static void main(String[] args) { ProgrammerBonus pb1 = new ProgrammerBonus("张三"); Bonus b1 =new Bonus(pb1); ProgrammerBonus pb2 = new ProgrammerBonus("李四"); Bonus b2 = new Bonus(pb2); ProgrammerBonus pb3 = new ProgrammerBonus("王五"); Bonus b3 = new Bonus(pb3); b1.start(); b2.start(); b3.start(); } }
老师,在上面代码中,用类对象作为锁对象,我试了下发现用 ProgrammerBouns.class 或 Bouns.class 都可以,这两个类对象用起来有啥区别嘛?
public class Generic <T>{ T name; T age; public Generic() { } public T getName() { return name; } public void setName(T name) { this.name = name; } public T getAge() { return age; } public void setAge(T age) { this.age = age; } public static void main(String[] args) { Generic<String> g1 = new Generic<>(); g1.setName("胖鱼"); g1.setAge("20"); System.out.println(g1.getName() + "..." + g1.getAge()); } }
老师你看我这么理解对吗
泛型类,其实是规定了这个类的对象的成员的数据类型,创建对象时加入泛型<String>,这个对象的类型依然是Generic类型,这个对象的属性的数据类型都变成了String类型
老师,线程同步中,使用字符串作为锁对象为何就可以实现不同对象调用同一线程的同步?这种方式锁定的到底是什么?锁定的肯定不是创建的实例化对象吧,因为使用了不同的实例化对象去调用同一线程。
// 程序员类 class Programmers{ private String name; public Programmers(String name) { this.name = name; } // 上洗手间 public void wc () { // 以空字符串为锁对象 synchronized (" ") { try { System.out.println(this.name + "打开卫生间门"); Thread.sleep(3000); System.out.println(this.name + "上厕所"); Thread.sleep(3000); System.out.println(this.name + "来也匆匆,去也冲冲"); Thread.sleep(4000); System.out.println(this.name + "打开卫生间门"); Thread.sleep(4000); } catch (InterruptedException e) { e.printStackTrace(); } } } } // 上洗手间线程 class WC extends Thread { private Programmers pn; public WC(Programmers pn) { this.pn = pn; } @Override public void run() { this.pn.wc(); } } public class ThreadConflictTest02 { public static void main(String[] args) { Programmers ps1 = new Programmers("张三"); Programmers ps2 = new Programmers("李四"); Programmers ps3 = new Programmers("王五"); new WC(ps1).start(); new WC(ps2).start(); new WC(ps3).start(); } }
启动logstash的时候报错了,导致数据没办法传到ES上面
老师这里的说如果没有callback和map接受返回值,而在方法中实现,就会在每个进程都会开启IO是什么意思,没懂、、、、、、、、、、、
2,而进程池则只需开启一个IO,然后就相当于他记录就行是为什么??????????????
老师,对于切片输出的值都是从第二个字符开始吗,第一个字符是不输出的?
非常抱歉给您带来不好的体验!为了更深入的了解您的学习情况以及遇到的问题,您可以直接拨打投诉热线:
我们将在第一时间处理好您的问题!
关于
课程分类
百战程序员微信公众号
百战程序员微信小程序
©2014-2025百战汇智(北京)科技有限公司 All Rights Reserved 北京亦庄经济开发区科创十四街 赛蒂国际工业园网站维护:百战汇智(北京)科技有限公司 京公网安备 11011402011233号 京ICP备18060230号-3 营业执照 经营许可证:京B2-20212637