进程是拥有资源的最小单位,线程是CPU调度的最小单位。
start方法真正启动线程,run只是一个普通方法
package com.study.basicJava.threads;
public class HelloSogou {
public static synchronized void main(String[] args) {
Thread t = new Thread(){
public void run(){
Sogou();
}
};
t.start();
System.out.println("hello");
}
static synchronized void Sogou(){
System.out.println("Sogou");
}
synchronized public void methodA(){
}
synchronized public void methodB(){
methodA();
}
}
假设 HelloSogou t = new HelloSogou();
t.methodA();
明确两个问题,谁是锁,锁在谁那里。
对象t是锁,持有锁的是当前线程(放在main方法的话,就是主线程)
静态同步函数的锁是该类的字节码文件.class
就是 HelloSogou.class