----------------------
ASP.Net+Android+IOS开发、.Net培训、期待与您交流! ----------------------
创建线程的2种方法
第一是继承thread类。步骤为:
1 定义类继承thread类。
2 重写thread类中的run方法。
3调用线程的start方法,该方法有两个作用:启动线程,和调用run方法。
第二种方式是实现runable接口。步骤为:
1 定义类实现run接口。
2 重写runable类中的run方法。
3 通过thread类建立线程的对象
4将runable接口的子类的对象做为实参传递给thread类的构造函数。
5 调用thread类的start的方法,开启线程并调用runable借口子类的run方法。
继承thread:线程代码放在子类的run方法中。
实现runable:线程代码存放在接口子类run中。
问题的原因是:
当多条语句操作一个线程共享数据时,一个线程对多条语句只执行了一部分,还没有执行完,另一个线程参与进来,导致共享数据错误,
解决办法:
对多条操作共享数据的语句只能让一个线程都执行完了,才能让别的另一线程执行完,别的线程不可以执行。
通过验证,发现不在是this,因为静态方法中不可以定义this。静态进内存中也没有对象,但是一定有该类对应的字节码文件的对象,类名.class。
只有一种,run方法结束。
开启多线程运行,运行的代码通常是循环结构,只需要控制循环,就可以让run方法结束,也就是线程结束。特殊情况:当线程处于冻结状态时,线程就不会结束。当没有指定的方式让冻结的线程回复到运行状态时,这时需要对冻结进行解除,强制让线程回复到运行状态,这样就可以操作标记,让线程结束,thread类提供了interrupet()。
关于join
当A线程执行到B线程的join方法时,A就会等待,等B线程执行完,A才会开始。