java实现线程开发的两种方式
继承Thread类
我们就可以认为当前的实现类就是一个线程类
运行时,每个Thread都拥有自己独立的run方法
实现Runnable接口(一般都当作共享资源)
而实现了Runnable接口的类并不是线程类,它只是一个可运行的对象
最终是要通过线程去执行的
运行时,被多个线程共享一个run方法
产生资源共享问题的原因:
由于CPU给所有线程分配的时间片长短是不一样的,
导致线程在没有处理完自身任务时,就让出的cpu资源
这时CPU就执行另外一个线程去了
解决办法
让资源的共享得到同步,在java中可以使用同步锁进行同步
但是会降低执行效率(synchronized)
同步锁可以加在方法上(锁住当前对象)
也可以加在代码块中(形成一个同步代码块)
|
|