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。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)