Java:零散知识点
这里的内容主要是一些专业知识点,内容比较分散,没有形成统一的汇总,比较零碎,如果需要看汇总一类,可以看《Java:经验总结》
大大大钢琴
别心急、做技术确实不容易;水平是在不断实践中发展和完善的!
展开
-
《知识点007:Java使用Thread的sleep(),wait()区别详解》
1. sleep()方法导致了程序暂停执行指定的时间,让出cpu该其他线程,但是他的监控状态依然保持者,当指定的时间到了又会自动恢复运行状态。在调用sleep()方法的过程中,线程不会释放对象锁。2. 调用wait()方法的时候,线程会放弃对象锁,进入等待此对象的等待锁定池,只有针对此对象调用notify()方法后本线程才进入对象锁定池准备。原创 2024-07-28 00:16:36 · 1 阅读 · 0 评论 -
《知识点006:Java使用Thread的synchronized同步锁》
run()方法中存在“synchronized(this)代码块”,而且t1和t2都是基于"demo这个Runnable对象"创建的线程。这就意味着,我们可以将synchronized(this)中的this看作是“demo这个Runnable对象”;因此,线程t1和t2共享“demo对象的同步锁”。所以,当一个线程运行的时候,另外一个线程必须等待“运行线程”释放“demo的同步锁”之后才能运行。原创 2024-07-28 00:09:05 · 92 阅读 · 0 评论 -
《知识点005:Java使用Thread.interrupt 用法》
Thread.interrupt()方法用于中断一个线程,但它的行为取决于线程当前的状态。具体来说,Thread.interrupt()方法的行为可以分为两种情况:当线程处于运行状态(RUNNING)或可运行状态(RUNNABLE)时,调用interrupt()方法只是会设置线程的中断标志位,没有任何其他作用。这意味着,如果线程正在执行一个循环或其他长时间运行的任务,并且没有定期检查中断标志位,那么即使调用了interrupt()方法,线程也不会立即停止执行。原创 2024-07-27 23:59:00 · 124 阅读 · 0 评论 -
《知识点004:Java使用Thread.interrupt() 中断线程》
2. 如果本线程是处于阻塞状态:调用线程的wait(), wait(long)或wait(long, int)会让它进入等待(阻塞)状态,或者调用线程的join(), join(long), join(long, int), sleep(long), sleep(long, int)也会让它进入阻塞状态。1、thread.interrupt()方法是中断线程,将会设置该线程的中断状态位,即设置为true,中断的结果线程是死亡、还是等待新的任务或是继续运行至下一步,就取决于这个程序本身。原创 2024-07-27 23:54:27 · 104 阅读 · 0 评论 -
《知识点003:Java使用Thread.currentThread()获取当前线程》
1. Thread提供静态方法currentThread()来供我们调用,既可以避免this无法获取到main线程的问题,又可以避免this无法获取到Thread t2=new Thread(Thread t)来开启的线程的问题,可以说currentThread方法可以在所有场合获取到正确的当前线程。通过这个方法,可以获取当前线程的各种属性,如线程名称、优先级、是否为守护线程等,并且可以对这些属性进行修改。当调用此方法时,当前线程的中断状态会被设置,如果线程处于阻塞状态(如调用。原创 2024-07-27 23:50:11 · 99 阅读 · 0 评论 -
《知识点002:Java使用Thread.Sleep()暂停当前线程》
1、Thread.sleep()被用来暂停当前线程的执行,会通知线程调度器把当前线程在指定的时间周期内置为wait状态。当wait时间结束,线程状态重新变为Runnable并等待CPU的再次调度执行。所以线程sleep的实际时间取决于线程调度器,而这是由操作系统来完成的。2、在windows环境下,进程调度是抢占式的。一个进程在运行态时调用sleep(),进入等待态,睡眠结束以后,并不是直接回到运行态,而是进入就绪队列,要等到其他进程放弃时间片后才能重新进入运行态。原创 2024-07-27 23:45:55 · 138 阅读 · 0 评论 -
《知识点001:线程-Thread.join()的介绍和使用》
1. 在Java多线程中,如果某一个线程s在另一个线程t上调用t.join(),此线程s将被挂起,直到目标线程t结束才恢复(此时t.isAlive()返回为假)。也可以在调用join()时带上一个超时参数(单位可以是毫秒,或者毫秒和纳秒),这样如果目标线程在这段时间内还没有结束的话,join()方法总能返回。对join()方法的调用可以被中断,做法是在调用线程上调用interrupt()方法。2. 如果线程被生成了,但还未被起动,isAlive()将返回false,调用它的join()方法是没有作用的。原创 2024-07-26 23:33:46 · 207 阅读 · 0 评论