黑马程序员--线程二(安全性)

来源:互联网 发布:用excel预测数据 编辑:程序博客网 时间:2024/06/07 22:01

多线程最怕的就是安全问题

原因:当多条语句在操作同一个线程共享数据时,一个线程对多条语句只执行了一部分,还没有执行完,另一个线程参与进来,导致共享数据错误。

解决办法:对多条操作共享数据的语句,只能让一个执行。

多线程如何找问题:

1、明确哪些代码是多线程运行代码

2、明确共享数据

3、明确多线程运行代码中哪些语句是操作共享数据的

如果同步函数被静态修饰后,使用什么锁?

通过验证,发现不再是this,静态方法中不可以定义this。静态进内存时,内存中没有本类对象,但一定有该类对应的字节码对象。

类名.class。该类的类型是class。

静态的同步方法,使用的锁是该方法所在类的字节码对象:类.class。

死锁:同步中嵌套同步,所用的锁不一样导致死锁。


线程间通讯:其实就是多个线程在操作同一个资源,但操作动作不同。

停止线程:stop方法过是,那么如何停止线程?等Run方法线束。开启多线程运行,运行代码通常是循环结构。只要控制住循环,就可以让线程线束。也就是Run方法

特殊情况:

线程处以冻结状态,就不会读到标记,那么线程就不会结束。

当没有指定的方式让冻结的线程恢复到运行状态时,这时需要对冻结进行清除。

强制让线程恢复到运行状态中来这样就可以操作标记,记线程结束。

thread线程提供了interrupt();

join:join可以用来临时加入线程执行。

例:A线程执行到了B线程的join方法时,A就会等待,等B线程执行完。A才会执行。


0 0
原创粉丝点击