多线程中有主内存和工作内存之分 在JVM中有一个主内存专门负责所有线程共享数据而每个线程都有他自己私有的工作内存 主内存和工作内存分贝在JVM的stack区和heap区
线程的状态有Ready Running Sleeping Blocked 和 Waiting几个状态Ready 表示线程正在等待CPU分配允许运行的时间
线程运行次序并不是按照我们创建他们时的顺序来运行的CPU处理线程的顺序是不确定的如果需要确定那么必须手工介入使用setPriority()方法设置优先级
我们无从知道一个线程什么时候运行两个或多个线程在访问同一个资源时需要synchronized
每个线程会注册自己实际某处存在着对它的引用因此垃圾回收机制对它就束手无策了
Daemon线程区别一般线程之处是主程序一旦结束Daemon线程就会结束
一个对象中的所有synchronized方法都共享一把锁这把锁能够防止多个方法对通用内存同时进行的写操作synchronized static方法可在一个类范围内被相互间锁定起来
对于访问某个关键共享资源的所有方法都必须把它们设为synchronized否则就不能正常工作
假设已知一个方法不会造成沖突最明智的方法是不要使用synchronized能提高些性能
如果一个同步方法修改了一个变量而我们的方法要用到这个变量(可能是只读)最好将自己的这个方法也设为 synchronized
synchronized不能继承 父类的方法是synchronized那么其子类重载方法中就不会继承同步
[] [] [] []