实现java多线程一般就是通过继承thread类或者实现runnable接口的方法,在网上一抓一大把,就不详细说了。
其实thread类就已经继承了runnable接口,thread只是runnable的一个实现。
- thread的优缺点,thread直接继承自runnable,实现了很多线程需要的东西,用起来比较简单,但是缺点就是不能再继承其他的类
- 实现runnable,就是能够高度的自定义线程,并且能够继承其他的类
thread的run方法和start方法
- start方法并不是调用start方法就会开始执行多线程,而是告诉系统这个线程已经准备好了,具体什么时候去执行就交给了jvm,当真正开始执行的时候就会去调用run方法。
- 那是不是直接调用run方法就能直接开启新线程呢?其实不是的,如果直接调用run方法,相当于是在主线程中去运行了thread中的run方法。
如何保证多线程执行的原子性
-
锁方法:
lock.lock(); try{ int j = i; i = j + 1; } finally { lock.unlock(); }
-
同步代码块 synchronized
public void testLock () { synchronized (anyObject){ int j = i; i = j + 1; } }
网友评论