老师,我这里用自己电脑的IP地址,为什么能把我电脑的名字给返回回来,是因为我电脑的名字不是域名嘛?
老师,我在这里锁的时候锁属性也可以,也就是说锁什么都行了?在使用的时候有没有什么要注意的地方呀?
压栈和弹栈这里代码执行流程我已经懵了,为什么打印完4之后,会打印6
老师,这里同步代码是锁的代码块,锁对象是指,放里面的对象或者线程,里面所有的代码都会锁住吗?
老师好,我有一些问题请教一下
数组扩容的因子是0.75,是指数组中存放了%75的位置的键值对,还是要算上数组的成员连接的链表节点的个数呢?
添加元素时,如果hash值相同,而数组长度并没有64位,那么当链表长度大于8时,冲突的键值对应该放在什么位置呢?是一直往更长的链表节点上放置吗?在视频中只讲了此时数组扩容。然后我看源码的时候也并没有看懂如何处理的,老师可以帮我找到相应处理的代码在哪里吗谢谢啦
这里的index能换成size?
如果把这里的index-1看成index如果一共有4个节点那么尾结点的index就是3,这里i<3,那么也遍历不出尾结点的地址啊,这里遍历到第三个节点的地址
老师 我还没明白这里的while 和 if 有什么区别,当使用if的时候,如果条件成立,那么线程也会进入一个等待状态,下面的代码不会被执行,知道被唤醒 ,唤醒之后是从while再次判断呢?还是直接就执行下面的代码,不会再经过while判断了?感觉if 和 while的效果应该是一样的吧?
老师 加了static 关键字 那口红和镜子在多线程当中就只有一个了吗
node是当前节点,tail是尾结点,tail.next是尾结点的下一个节点
tail.next =node;把当前节点挂载到整个单项链表当中的最后一个节点上
1. tail是尾结点不就是最后的一个节点吗?
2. node当前节点是指getTail()方法返回的尾结点吗?不是的话又是怎么理解的
老师,请问下是不是因为都进行线程同步,此时两个线程对象都执行,你拿着镜子我拿着口红都没办法化妆,然后卡在这里了
DrawMoneyThread { (String[] args) { Account account = Account()DrawThread(account).start()DrawThread(account).start()} } DrawThread Thread{ Account (String nameAccount accountdrawMoney) { (name).= account.= drawMoney} () { (..getBalance() >= .){ System..println(.getName() + + .){ Thread.()} (InterruptedException e) { e.printStackTrace()} ..setBalance(..getBalance() - .)System..println(+ ..getBalance())}{ System..println(.getName() + )} } } Account { String () { } (String accountNobalance) { .= accountNo.= balance} String () { } (String accountNo) { .= accountNo} () { } (balance) { .= balance}
老师我的运行结果为什么是这样的,我的代码和老师的一样。
老师为甚么我的运行结果是这样的
我的代码和老师的一样
怎么还有 f 呢
请问老师,是否是因为字符串在常量池中创建后找得都是常量池这个对象的地址,我自己试了下如果对象锁不是同一个常量值那么还是会并行的
老师,请问下这样写的话比较麻烦吗
package com.bjsxt.线程同步; public class TestSyncThread { public static void main(String[] args) { Program p = new Program(); p.setName("Mokura"); Thread thread = new Thread(new Working(p)); Thread thread1 = new Thread(new Bought(p)); thread.start(); thread1.start(); System.out.println("主线程结束"); } } class Program { String name; public String getName() { return name; } public void setName(String name) { this.name = name; } @Override public String toString() { return "Program{" + "name='" + name + '\'' + '}'; } } class Working implements Runnable{ private Program program; public Working(Program p) { this.program = p; } @Override public void run() { synchronized (this.program){ try { System.out.println(program.getName() + "先去找工作"); Thread.sleep(1000); System.out.println(program.getName() + "辛苦工作一个月"); Thread.sleep(1000); System.out.println(program.getName() + "发工资啦!!!!"); Thread.sleep(1000); }catch (Exception e){e.printStackTrace();} } } } class Bought implements Runnable{ private Program program; public Bought(Program p) { this.program = p; } @Override public void run() { synchronized (this.program){ try { System.out.println(this.program.getName()+"去超市转了"); Thread.sleep(1000); System.out.println(this.program.getName()+"看中了2022-Bilibili春节限定花嫁手办"); Thread.sleep(1000); System.out.println("心满意足的回家了"); }catch (Exception e){e.printStackTrace();} } } }
非常抱歉给您带来不好的体验!为了更深入的了解您的学习情况以及遇到的问题,您可以直接拨打投诉热线:
我们将在第一时间处理好您的问题!
关于
课程分类
百战程序员微信公众号
百战程序员微信小程序
©2014-2025百战汇智(北京)科技有限公司 All Rights Reserved 北京亦庄经济开发区科创十四街 赛蒂国际工业园网站维护:百战汇智(北京)科技有限公司 京公网安备 11011402011233号 京ICP备18060230号-3 营业执照 经营许可证:京B2-20212637