1、sleep方法是静态的,出现在哪个线程中,那个线程就会睡眠。
public static void main(String[] args){
//让主线程main睡眠
Thread.sleep(1000);
//sleep是静态方法,此时仍是Thread.sleep(),
//所以是主线程main睡眠;想要t线程睡眠,需要在t代码去中执行sleep()方法。
MyThread t = new MyThread();
t.sleep(2000);
}
2、Java中由三大变量:
实例变量:在堆中
静态变量:在方法区中
局部变量:在栈中
只有【局部变量+常量】不存在线程安全问题,而堆和方法区是多线程共享的。
3、类安全
StringBulider 非线程安全
StringBuffer 线程安全
ArrayList 非线程安全
Vector 线程安全
HashMap HashSet 非线程安全
Hashtable 线程安全
4、synchronized
//同步代码块:
synchronized(线程共享对象){
for(int i = 1){
....
}
}
//实例方法:共享对象是this
public synchronized void run(){
....
}
//类:修饰静态方法
public synchronized static void test(){
}