//创建线程方式一:继承Thread类,重写run()方法,调用start开启线程//注意:线程开启不一定立即执行,由CPU调度执行publicclassTestThread1extendsThread{@Overridepublicvoidrun(){//run方法线程体for(int i =0; i <20; i++){
System.out.println("我在看代码--"+i);}}publicstaticvoidmain(String[] args){//main线程,主线程//创建一个线程对象
TestThread1 testThread1 =newTestThread1();//调用start()方法开启线程
testThread1.start();for(int i =0; i <200; i++){
System.out.println("我在学习多线程--"+i);}}}
//创建线程方式二:(推荐)实现runnable接口,重写run方法,执行线程需要丢入runnbale实现类,调用start方法publicclassTestThread3implementsRunnable{@Overridepublicvoidrun(){//run方法线程体for(int i =0; i <200; i++){
System.out.println("我在看代码--"+i);}}publicstaticvoidmain(String[] args){//创建runnable接口的实现类对象
TestThread3 testThread3 =newTestThread3();//创建线程对象,通过线程对象来开启我们的线程,代理newThread(testThread3).start();for(int i =0; i <1000; i++){
System.out.println("我再学习多线程--"+i);}}}
//测试stop//1.建议线程正常停止-->利用次数,不建死循环//2.建议使用标志位-->设置一个标志位//3.不要使用stop或者destory等过时或者JDK不建议使用的方法publicclassTestStopimplementsRunnable{//1.设置一个标志位privateboolean flag =true;@Overridepublicvoidrun(){int i =0;while(flag){
System.out.println("run....Thread"+i++);}}//2.设置一个公开的方法停止线程,转换标志位publicvoidstop(){this.flag =false;}publicstaticvoidmain(String[] args){
TestStop testStop =newTestStop();newThread(testStop).start();for(int i =0; i <1000; i++){
System.out.println("main"+i);if(i==900){//调用stop方法切换标志位,让线程停止
testStop.stop();
System.out.println("线程该停止了");}}}}
多线程继承Thread类//创建线程方式一:继承Thread类,重写run()方法,调用start开启线程//注意:线程开启不一定立即执行,由CPU调度执行public class TestThread1 extends Thread{ @Override public void run() { //run方法线程体 for (int i = 0; i < 20; i++) { System.out.println("我在