首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
AI 模拟面试
简历
求职
学习
基础学习课
实战项目课
求职辅导课
专栏&文章
竞赛
搜索
我要招人
发布职位
发布职位、邀约牛人
更多企业解决方案
AI面试、笔试、校招、雇品
HR免费试用AI面试
最新面试提效必备
登录
/
注册
书海为家
获赞
33
粉丝
5
关注
0
看过 TA
65
男
郑州大学
2011
Java
IP属地:香港
在AI时代,聚焦豆包大模型和AI云原生技术。
私信
关注
拉黑
举报
举报
确定要拉黑书海为家吗?
发布(50)
评论
刷题
收藏
书海为家
关注TA,不错过内容更新
关注
03-06 14:46
郑州大学 Java
Java中的定时任务
在Java中,主要有两种方式实现定时任务:使用java.util包中的Timer和TimerTask。使用Java并发包中的ScheduledExecutorService。Timer和TimerTaskTimerTask:表示一个定时任务,它是一个抽象类,实现了Runnable,具体的定时任务需要继承该类,实现run方法。Timer是一个具体类,它负责定时任务的调度和执行运行一次: //在指定绝对时间time运行任务task public void schedule(TimerTask task, Date time) //在当前时间延时delay毫秒后运行任务task public voi...
Java知识专辑
0
点赞
评论
收藏
分享
郑州大学 Java
看完这篇文档,来检验下你的掌握情况,看看你是否可以找出其中的问题:https://www.nowcoder.com/discuss/859437338936487936
@书海为家:
线程池的使用说明
0
点赞
评论
收藏
分享
03-06 14:18
已编辑
郑州大学 Java
很多人这么用了但不知道这里有问题,你能看出来问题在哪里吗?
new ThreadPoolExecutor(2, 16, 60, TimeUnit.SECONDS, new LinkedBlockingQueue<>());
Java面试专辑
0
点赞
评论
收藏
分享
03-06 14:09
郑州大学 Java
线程池的使用说明
线程池主要由两个概念组成:一个是任务队列;另一个是工作者线程。工作者线程主体就是一个循环,循环从队列中接受任务并执行,任务队列保存待执行的任务。ThreadPoolExecutor继承自AbstractExecutorService,实现了ExecutorService。ThreadPoolExecutor实现了生产者/消费者模式,工作者线程就是消费者,任务提交者就是生产者,线程池自己维护任务队列。当我们碰到类似生产者/消费者问题时,应该优先考虑直接使用线程池,而非“重新发明轮子”,应自己管理和维护消费者线程及任务队列。两个构造函数 public ThreadPoolExecutor(int ...
Java知识专辑
0
点赞
评论
收藏
分享
03-06 13:47
郑州大学 Java
异步任务是如何运转的
任务执行服务涉及的基本接口:Runnable和Callable:表示要执行的异步任务。Runnable没有返回结果,而Callable有,Runnable不会抛出异常,而Callable会。Executor和ExecutorService:表示执行服务。Future:表示异步任务的结果。Runnable、Callable @FunctionalInterface public interface Runnable { /** * When an object implementing interface <code>Runnable</code> is used * ...
Java知识专辑
0
点赞
评论
收藏
分享
03-06 13:36
已编辑
郑州大学 Java
并发队列的实现
下面这些队列迭代都不会抛出ConcurrentModificationException,都是弱一致的。队列实现使用场景ConcurrentLinkedQueueConcurrentLinkedDeque无锁非阻塞并发队列分别实现了Queue接口和Deque接口。基于链表实现的,都没有限制大小,是无界的。ConcurrentLinkedQueue实现了Queue接口,表示一个先进先出的队列,从尾部入队,从头部出队,内部是一个单向链表。ConcurrentLinkedDeque实现了Deque接口,表示一个双端队列,在两端都可以入队和出队,内部是一个双向链表。实现:这两个类最基础的原理是循环CA...
Java知识专辑
0
点赞
评论
收藏
分享
郑州大学 Java
答案:ConcurrentHashMap没有ConcurrentModificationException的问题。既不能完全反映其它线程的修改,也不能反映创建迭代器时的副本。 原因:ConcurrentHashMap是弱一致的。详细见:https://www.nowcoder.com/discuss/859413732525342720
@书海为家:
ConcurrentHashMap会ConcurrentModificationException吗
0
点赞
评论
收藏
分享
03-06 13:33
郑州大学 Java
ConcurrentHashMap会ConcurrentModificationException吗
ConcurrentHashMap有ConcurrentModificationException的问题吗?迭代会反映其他线程的修改吗?还是反映的是创建时的副本?
查看3道真题和解析
0
点赞
评论
收藏
分享
03-06 12:43
郑州大学 Java
并发容器的实现
Java中常用的几个并发容器容器实现使用场景CopyOnWriteArrayList内部是一个数组,这个数组是以原子方式被整体更新的。写:每次修改操作,都会新建一个数组,复制原数组的内容到新数组,在新数组上进行需要的修改,然后以原子方式设置内部的数组引用,这就是写时复制。多个线程不能同时写,每个写操作都需要先获取锁。CopyOnWriteArrayList内部使用ReentrantLock。读:先拿到当前引用的数组,然后直接访问该数组。在读的过程中,可能内部的数组引用已经被修改了,但不会影响读操作,它依旧访问原数组内容。读不需要锁,可以并行,读和写也可以并行。CopyOnWriteArrayL...
Java知识专辑
0
点赞
评论
收藏
分享
郑州大学 Java
可以先实习:https://www.nowcoder.com/discuss/859082855761055744 实习过的同学,转正概率挺高的。
原内容已删除
0
点赞
评论
收藏
分享
郑州大学 Java
有一道关于中断的面试题,看看大家是否知道答案:https://www.nowcoder.com/discuss/859405187675377664
@书海为家:
中断的本质
0
点赞
评论
收藏
分享
03-06 12:28
已编辑
郑州大学 Java
代码中的线程a会结束吗?
public class InterruptSynchronizedDemo { private static Object lock = new Object(); private static class A extends Thread { @Override public void run() { synchronized (lock) { while (!Thread.currentThread().isInterrupted()) {} } System.out.println("exit"); } } public static void test() thr...
Java面试专辑
0
点赞
评论
收藏
分享
03-06 12:13
已编辑
郑州大学 Java
中断的本质
在Java中,停止一个线程的主要机制是中断,中断并不是强迫终止一个线程,它是一种协作机制,是给线程传递一个取消信号,但是由线程来决定如何以及何时退出。 public boolean isInterrupted() public void interrupt() public static boolean interrupted() 每个线程都有一个标志位,表示该线程是否被中断了。isInterrupted:返回对应线程的中断标志位是否为true。interrupted:返回当前线程的中断标志位是否为true,但它还有一个重要的副作用,就是清空中断标志位,也就是说,连续两次调用interrupt...
Java知识专辑
0
点赞
评论
收藏
分享
03-06 10:56
郑州大学 Java
synchronized的使用
每个Object对象都有一把锁和等待队列,一个线程在进入synchronized代码块时,会尝试获取锁,如果获取不到则会把当前线程加入等待队列中。执行synchronized的过程大致如下:尝试获得锁,如果能够获得锁,继续下一步,否则加入等待队列,阻塞并等待唤醒。执行实例方法体代码。释放锁,如果等待队列上有等待的线程,从中取一个并唤醒,如果有多个等待的线程,唤醒哪一个是不一定的,不保证公平性。当前线程不能获得锁的时候,它会加入等待队列等待,线程的状态会变为BLOCKED。synchronized保护的是对象而非代码,只要访问的是同一个对象的synchronized方法,即使是不同的代码,也会被...
Java知识专辑
0
点赞
评论
收藏
分享
03-05 17:02
郑州大学 Java
volatile有什么作用?
如果共享的对象只有一个,操作也只是进行最简单的get/set操作,set也不依赖于之前的值,那就不存在竞态条件问题,而只有内存可见性问题,这时,在变量的声明上加上volatile就可以了。加了volatile之后,Java会在操作对应变量时插入特殊的指令,保证读写到内存最新值,而非缓存的值。
Java面试专辑
0
点赞
评论
收藏
分享
1
2
3
4
创作者周榜
更多
关注他的用户也关注了:
牛客网
牛客网在线编程
牛客网题解
牛客企业服务