------
Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
1)这时可能会出现产生资源共享问题的原因,这是由于CPU给所有线程分配的时间片长短是不一样的,导致线程在没有处理完自身任务时,就让出的cpu资源,这时CPU就执行另外一个线程去了。
2)解决办法
让资源的共享得到同步,在java中可以使用同步锁进行同步
但是会降低执行效率(synchronized)
一、java实现线程开发的两种方式
1、继承Thread类
我们就可以认为当前的实现类就是一个线程类,运行时每个Thread都拥有自己独立的run方法。2、实现Runnable接口(一般都当作共享资源)
而实现了Runnable接口的类并不是线程类,它只是一个可运行的对象,最终是要通过线程去执行的,运行时被多个线程共享一个run方法。1)这时可能会出现产生资源共享问题的原因,这是由于CPU给所有线程分配的时间片长短是不一样的,导致线程在没有处理完自身任务时,就让出的cpu资源,这时CPU就执行另外一个线程去了。
2)解决办法
让资源的共享得到同步,在java中可以使用同步锁进行同步
但是会降低执行效率(synchronized)
二、线程可能会出现两种锁死的现象
1、活锁(线程都进入等待队列,程序没有线程执行,但可以在外部唤醒线程)
2、死锁(两个线程都有自己的钥匙,然后想去拿对方的钥匙)
极小可能会出现“饿死”(某个线程永远得不到CPU分配的时间片)