定义线程类 public class MyThread extends Thread{ public void run(){ } } 创建线程对象 MyThread myThread = new MyThread(); 启动线程 myThread.start();
编写线程类:
classMyThreadextendsThread{@Overridepublicvoidrun(){for(int i =0; i <1000; i++){
System.out.println("分线程————>"+ i);}}}
主线程中启动分线程:
publicclassThreadTest02{publicstaticvoidmain(String[] args){//这里是main方法,属于主线程,在主栈中运行//创建分支线程对象
MyThread myThread =newMyThread();//.run()方法不会启动线程,不会分配新的分支线// myThread.run();//start()方法的作用:启动一个分支线程,在JVM中开辟一个新的栈空间,// 这段代码在开辟一个新的栈空间之后就结束了,线程就启动成功了。//启动成功的线程会自动调用run方法,并且run方法在分支栈的栈底部。//run方法和main方法是平级的,都在栈的底部
myThread.start();for(int i =0; i <1000; i++){
System.out.println("main线程————>"+ i);}}}
第二种方式: 编写一个类,实现java.lang.Runnable接口,实现run方法
定义一个可运行的类 public class MyRunnable implements Runnable{ public void run(){ } } 创建线程对象 Thread thread = new Thread(new MyRunnable()); 启动线程 thread.start();
注意:因为java中只支持单继承,使用第一种方式会有局限性,所以建议使用实现接口的第二种方式
编写线程类:
classMyRunnableimplementsRunnable{@Overridepublicvoidrun(){for(int i =0; i <1000; i++){
System.out.println("分线程————>"+ i);}}}
主线程中启动分线程:
publicclassThreadTest03{publicstaticvoidmain(String[] args){//创建线程对象// MyRunnable myRunnable = new MyRunnable();// Thread thread = new Thread(myRunnable);//合并
Thread thread =newThread(newMyRunnable());//启动线程
thread.start();for(int i =0; i <1000; i++){
System.out.println("main线程————>"+ i);}}}
使用匿名内部类的方式实现线程
虽然接口无法实例化,但可以通过匿名内部类的方式直接来操作
publicclassThreadTest04{publicstaticvoidmain(String[] args){
Thread thread =newThread(newRunnable(){@Overridepublicvoidrun(){for(int i =0; i <1000; i++){
System.out.println("分支线程:"+ i);}}});
thread.start();for(int i =0; i <1000; i++){
System.out.println("main线程:"+ i);}}}