1.线程创建
public static void main(String[] args) {
@SuppressWarnings("unused")
Thread thread1=new Thread(){
public void run() {
System.out.println("run");
}
};
thread1.start();
}
2.继承的方式创建。这种方式跟类的继承没什么区别,普通类继承线程之后具备线程的全部功能。
public class MyThread extends Thread{
@Override
public void run() {
// TODO Auto-generated method stub
super.run();
System.out.println("run");
}
public static void main(String[] args) {
// TODO Auto-generated method stub
MyThread myThread=new MyThread();
myThread.start();
}
}
3.因为总线传得是电信号,所以同一时刻总线只能走同一种信号
4.高速缓存计算到一定次数之后把数据更新回内存;多线程情况下,某一个线程在其他线程读内存数之前把数据更新回去,就不会产生数据错误。数据样本太多会产生数据错误。数据样本少也可能会发生错误。
5.多线程使用的是同一个数据,第一个线程还没结束计算,第二个线程就开始读取数据就会发生错误。
6.线程数锁:如果不加锁方法每个线程都可以拷贝一份这个方法,加锁同一时刻只有一个线程可以拷贝这个方法,等这个方法结束了,出栈了其他方法才可以拷贝压栈,调用这个方法。
7.锁关键字:synchronized
8.如果有A,B两个线程,第一次分配的是A,A完成任务被释放了之后A,B两个线程开始竞争资源,第二次调用的也可能是A,也有可能是B。



