Java基础学习

来源:互联网 发布:java单例模式调用 编辑:程序博客网 时间:2024/06/07 09:24

多线程学习-小知识点

1.wait /notify的存在是在synchronized 下。

2.Thread  为什么不能直接调用run()函数而是使用start()方法进行线程的调用。

使用run是方法的调用,不是线程并行,执行完run之后采能执行其他线程。所以使用start函数

3.两种线程的创建和启动方式(启动:start()方法)   

1)extends Thread 不提倡,因为Java不能多继承,最好使用下面的方法。

2)implements Runnable  在main主函数中还是要新建该类的Thread对象。

重写 public void run()方法


线程状态的转换:

Thread.sleep(静态方法)抛出异常InterruptedException,需要捕捉。哪里调用,那歌线程睡眠。

interrupt:太粗暴,不建议使用/stop:一样,不建议使用--较好停止方法逻辑变量Flag-while进行停止。

join:调用某线程,执行结束后,再恢复当前线程的运行

yield:让出CPU,让其他线程执行的机会

优先级:优先级越高,获得CPU执行的时间片越多,并不是一点不执行

wait

notify/notifyAll


锁定方式

synchronized(this){

}

锁定当前对象-互斥锁

或方法上注明synchronized  执行方法时,锁定当前对象(当前代码、方法 )

只有一个线程进入这个方法中,但是不妨碍别的方法,除非别的方法上锁





死锁

o1  被锁定 休息 需要锁定o2

o2  被锁定 休息 需要锁定o1

陷入死锁状态

 


0 0