java多线程基础知识点
lock
概述 : 可以更加清晰的加锁和释放锁,JDK5之后就提供了新的锁对象LOCK
方法:
void lock( ) 获取锁
void unlock ( ) 释放锁
实现类:
ReentrantLock 类
死锁问题
概述 :
是指两个或者两个以上的线程在执行过程中,因为争夺资源产生的一种相互等待现象
同步弊端:
效率低、如果出现了同步嵌套,就容易产生死锁问题
’
线程之间的通信问题
不同种类之间针对同一资源的操作
·生产者消费者问题
思路:
生产者:
1、先看是否有数据,有就等待,没有就生产
2、生产完成之后,就通知消费者来消费数据
消费者:
1、先看是否有数据,有就消费,没有就等待
2、通知生产者生产数据
加锁的注意事项
不同种类的线程都要加锁
不同种类的线程加的必须都是统一把锁
定时器
可以用于调度多个定时任务以后台线程的方式执行
可以在指定的时间做某件事,可以重复的做某件事
可以通过Timer和TimerTask类来完成定义调度的功能
Timer定时
public Timer ( )
public void schedule ( TimerTask ,long delay )
public void schedule ( TimerTask, long delay,long period )
TimerTask
public abstract void run( )
public boolean cancel ( )
在开发中Quartz是一种完全有java编写的开源调度框架
线程池
可以很好地提高性能,尤其是在当程序中要创建大量生存周期很短的线城市,更应该考虑使用线程池
线程池里的每一个线程代码结束后并不会死亡,而是再次回到线程池中称为空闲状态下,等待下一个对象再来使用
JDK5之前必须手动实现自己的线程池,从JDk5开始,java内置支持线程池
Executors 工厂类
创建新的缓冲线程池newCachedThreadPool ( );
创建多条线程: newFixedThreadPool( int hreads )
创建单一的线程池 : newSingleThreadExecutor ( );
线程组
java中使用的ThreadGroup来表示线程组,他可以对一批线程进行管理
java允许程序直接对线程组进行控制
public final ThreadGroup getThreadGroup ( ) 默认情况下所有的线程都属于主线程组
Thread ( ThreadGroup group, Runnable target ,String name ) 给线程设置分组
本文深入探讨了Java多线程的基础知识点,包括Lock锁的使用、死锁问题、线程间通信如生产者消费者问题、定时器应用、线程池管理、线程组的概念及其实现,为开发者提供全面的多线程编程指导。


被折叠的 条评论
为什么被折叠?



