多线程
来源:互联网 发布:索尼手机升级软件 编辑:程序博客网 时间:2024/06/07 06:43
- 继承Thread类或者Runnable接口
- 注:CPU同一时间只能运行一个线程
多线程需要处理可见性的原因:
CPU 内部的缓存:现在的CPU一般都拥有层次结构的几级缓存。CPU直接操作的是缓存中的数据,并在需要的时候把缓存中的数据与主存进行同步。因此在某些时刻,缓存中的数据与主存内的数据可能是不一致的。某个线程所执行的写入操作的新值可能当前还保存在CPU的缓存中,还没有被写回到主存中。这个时候,另外一个线程的读取操作读取的就还是主存中的旧值。
CPU的指令执行顺序:在某些时候,CPU可能改变指令的执行顺序。这有可能导致一个线程过早的看到另外一个线程的写入操作完成之后的新值。 - 正常退出方法:使用旗标
已抛弃的方法:stop,不太适合的方法interrupt
通过互斥与同步解决这个问题,Synchronized
互斥块的定义:synchronized(lockObj){
lockObj.wait();//等待
……
lockObj.notifyAll();//唤醒
}
同步根据,wait()/notify()/notifyAll()属于Object类
0 0