package nxr.cn;
/**
* 第一种方法:创建线程
* 1.继承Thread+重写run
* 2.启动 start
* @author 26651
*
*/
public class StartThread extends Thread{
/**
* 线程入口点
*/
@Override
public void run() {
for(int i=0;i<20;i++) {
System.out.println("听歌");
}
}
public static void main(String[] args) {
//创建子类对象
StartThread st = new StartThread();
//启动线程
st.start(); //把线程交给 cpu 调度
//st.run(); //普通方法的调用
for(int i=0;i<20;i++) {
System.out.println("打游戏");
}
}
}
package nxr.cn;
/**
* 创建线程第二种方式
* 1.实现Runable+重写run
* 2.启动:创建(实现类对象 + Thread代理对象) + start
* @author 26651
*
*/
public class StartThread2 implements Runnable{
/**
* 线程入口点(线程体)
*/
@Override
public void run() {
for(int i=0;i<20;i++) {
System.out.println("一边听歌");
}
}
public static void main(String[] args) {
// //创建实现类对象
// StartThread2 st = new StartThread2();
// //创建代理类对象
// Thread tr = new Thread(st);
// //启动线程
// tr.start(); //把线程交给 cpu 调度
// //st.run(); //普通方法的调用
new Thread(new StartThread2()).start(); //对象只使用一次,使用匿名对象
for(int i=0;i<20;i++) {
System.out.println("一边写代码");
}
}
}