继承Thread类
步骤:
* 1.自定义类继承Thread类
* 2.重写Thread类中的run方法
* 3.调用线程的start方法
*
package com.zrgj.thread;
/**
* @Author jinliwei
* @Date 2019/10/24 10:14
**/
/*
* 继承Thread类
* */
public class ThreadDemo1 {
/*
* 步骤:
* 1.自定义类继承Thread类
* 2.重写Thread类中的run方法
* 3.调用线程的start方法
*
* */
public static void main(String[] args) {
//线程命名的方式
//1.通过get/set进行命名
// Thread td = new Thread();
// td.setName("张三");
// String name = td.getName();
// System.out.println(name);
// System.out.println(td);
//2.通过构造方法
// Thread td = new Thread("李四");
// System.out.println(td.getName());
//3.通过子类的方式命名
// ThreadDemo tt = new ThreadDemo();
// tt.setName("张三");
// System.out.println(tt.getName());
//4.通过子类构造方法
// ThreadDemo tt = new ThreadDemo("zhangsan");
// System.out.println(tt.getName());
//创建两个线程
ThreadDemo td = new ThreadDemo("zhangsan");
ThreadDemo tt = new ThreadDemo("lisi");
//如果使用.run()方法,也会执行,但是会以单线程的方式执行
//start()方法还在内部调用run方法
td.start();
tt.start();
//主线程运行
for (int i = 0 ;i<5;i++){
System.out.println("主线程的运行:"+i);
}
}
//自定义子类去继承Thread类
static class ThreadDemo extends Thread{
public ThreadDemo(String name) {
super(name);
}
public ThreadDemo() {
}
@Override
public void run() {
for (int i=0;i<5;i++){
System.out.println("子线程的运行:"+this.getName()+"..."+i);
}
}
}
}
实现Runnable接口
步骤:
1.定义类实现Runnable接口
2.重写Runnable接口中的run方法,将线程要运行的代码放到该run方法中
3.通过Thread类建立线程对象
4.将Runnable接口的子类对象作为实际参数传给Thread构造函数
5.调用Thread类中的start方法开启线程并调用Runnable接口中子类的run方法
package com.zrgj.thread;
/**
* @Author jinliwei
* @Date 2019/10/24 10:38
**/
/*
* 2.实现Runnable接口
* */
public class ThreadDemo2 {
/*
步骤:
1.定义类实现Runnable接口
2.重写Runnable接口中的run方法,将线程要运行的代码放到该run方法中
3.通过Thread类建立线程对象
4.将Runnable接口的子类对象作为实际参数传给Thread构造函数
5.调用Thread类中的start方法开启线程并调用Runnable接口中子类的run方法
*/
public static void main(String[] args) {
RunTest rt = new RunTest();
//建立线程对象
Thread td = new Thread(rt);
Thread tt = new Thread(rt);
//开启线程并调用run方法
//start()方法内部调用run方法
td.start();
tt.start();
}
//定义类实现Runnable接口
static class RunTest implements Runnable{
private int tick = 10;
//重写Runnable接口中的run方法,将线程要运行的代码放到该run方法中
@Override
public void run() {
while (true){
if (tick>0){
System.out.println(Thread.currentThread().getName()+"..."+tick);
}
}
}
}
}