1.线程的两种方式
方式一:需要从Java.lang.Thread类派生一个新的线程类,重写它的run()方法;
[java] view plaincopyprint?
- class Runner Extends Thread{
- public void run(){}
- }
- main:
- Runner r = new Runner();
- r.start();
方式二:实现Runnalbe接口,重写Runnalbe接口中的run()方法。
[java] view plaincopyprint?
- class Runner implements Runnable{
- public void run(){}
- }
- main:
- Runner r = new Runner();
- Thread thread = new Thread(r);
- thread.start();
因为Java只能单继承,为了能让自定义类实现更复杂的功能建议实现Runnalbe接口2.join(),在主线程调用 新线程.join(),把新线程合并到主线程中去,新线程成为主线的一部分,执行步骤则是变成先执行完新线程的内容再执行主线程中join()后面的内容3.interrept和yield的区别,interrept完全停止这个线程,以后都不再执行,yield则是将当前此刻的执行权让出,让cpu执行其他线程,过一会又会重新执行4.getPriority和setPriority设置优先级5.正确停止一个循环线程的方法[java] view plaincopyprint?
- class Runner implements Runnable{
- private flag = true;
- publiv void run(){
- while(flag){}
- }
-
- public void stopThread(){
- flag = false;
- }
- }
第一步骤:flag=false第二步骤:在主线程中调用,该线程.join(); 6.当对一个方法加synchronized后,这个方法在某一时刻只能由一个线程调用,不过可以修改,访问,该方法中的成员变量,成员变量并没有锁住,同一时刻只能加锁的方法只能
运行一个,必须等前个方法的锁时间到了,才能调用后一个方法7.wait()锁定住当前对象的线程,将其停止住,对应的方法notify()叫醒该线程 |