上一页 1 ··· 45 46 47 48 49 50 51 52 53 ··· 97 下一页
摘要: 我对这个的理解:人家是设计成这样的。你会发现在wait前是要先拿到锁的,然后wait释放锁,让其他线程抢夺。在notify或notifyAlll前,你要先拿到锁,然后唤醒线程,当同步代码结束后释放锁,这时候其他线程便可以抢了。 这整个过程都离不开锁,如果不在同步上下文中使用wait,notify,n 阅读全文
posted @ 2020-09-26 09:54 爱编程DE文兄 阅读(274) 评论(0) 推荐(0) 编辑
摘要: 这个问题我们先假设在if的情况下,以生产者和消费者来说,当容器满了,生产线程在满足if的条件下执行wait了,后面有人唤醒它了,它也顺利拿到锁了,这时候你想一下,它从哪开始执行?是不是上次wait的代码下一行开始执行,它就跳过if的判断去生产了,要是这时候容器满了呢?那容器就肯定溢出了,这肯定不是我 阅读全文
posted @ 2020-09-26 09:43 爱编程DE文兄 阅读(527) 评论(1) 推荐(0) 编辑
摘要: notify导致的问题应该不叫死锁,死锁起码得有两把锁把,很多人举的例子都是一把锁的,而且代码好乱。 我举个例子说一下所谓的notify可能会导致的”死锁“: 》现在有10个人负责做蛋糕,而只有2个人负责吃蛋糕;其中4个做蛋糕的人由于之前装蛋糕的容器满了,一直在等待区里没被通知过,后来2个吃蛋糕的人 阅读全文
posted @ 2020-09-25 21:12 爱编程DE文兄 阅读(1536) 评论(0) 推荐(0) 编辑
摘要: Runnable接口有个缺点,它的run方法没有返回值并且不能抛异常,如果需要线程执行完返回一个结果以及希望能抛出异常,那么还有一个接口刚好能弥补这两个缺点:Callable,它跟Runnable都是任务接口,使用上基本相同 阅读全文
posted @ 2020-09-25 16:15 爱编程DE文兄 阅读(156) 评论(0) 推荐(0) 编辑
摘要: 》若线程池没有关闭,则程序是不会关闭的 阅读全文
posted @ 2020-09-25 16:01 爱编程DE文兄 阅读(118) 评论(0) 推荐(0) 编辑
摘要: 阅读全文
posted @ 2020-09-25 15:48 爱编程DE文兄 阅读(108) 评论(0) 推荐(0) 编辑
摘要: 阅读全文
posted @ 2020-09-25 15:32 爱编程DE文兄 阅读(98) 评论(0) 推荐(0) 编辑
摘要: 阅读全文
posted @ 2020-09-25 15:19 爱编程DE文兄 阅读(179) 评论(0) 推荐(0) 编辑
摘要: 在java中创建线程的方式有两种: 1.继承Thread类;继承Thread的类就是一个线程类,需要重新run方法,run方法里的代码就是本线程要执行的代码 2.实现Runnable接口,并重新run方法,并将实现类作为参数交给一个Thread类区执行;实现Runnable接口的类相当是一个任务类, 阅读全文
posted @ 2020-09-25 15:14 爱编程DE文兄 阅读(107) 评论(0) 推荐(0) 编辑
摘要: 1. sleep()方法:是属于Thread类中的。 wait()方法:是属于Object类中的;两者都会造成线程的阻塞(让出cpu使用权) 2. sleep()方法是在指定的时间让当前线程暂停执行,让出cpu该其他线程,但是他的状态依然保持(就是执行到了哪行代码就在哪行停留着,等到超时或者调用in 阅读全文
posted @ 2020-09-25 15:05 爱编程DE文兄 阅读(410) 评论(0) 推荐(0) 编辑
上一页 1 ··· 45 46 47 48 49 50 51 52 53 ··· 97 下一页