线程的相关概念
线程的创建
- 通过Thread类:
- 继承Thread类
- 重写run方法
- 调用Start方法 举个小小的例子:
package com.Thread;
public class threadTest1 extends Thread{
//重写run方法
@Override
public void run() {
for (int i = 0; i < 20; i++) {
System.out.println("我正在做作业"+i);
}
}
public static void main(String[] args) {
//main线程和主线程同时执行,通过cpu的调度
//创建一个线程对象
threadTest1 threadTest1 = new threadTest1();
//调用start方法
threadTest1.start();
for (int i = 0; i < 30; i++) {
System.out.println("我正在读书"+i);
}
}
}
输出结果:
这里按顺序输出是因为我们执行的太少了,电脑一下子解决,就看不出来main线程和主线程同时执行的,如果我们把循环的次数改大一点,比如说,1000啥的,就会出现不同哦。
- 通过Runnable接口**(推荐使用,因为Java是单继承)**:
- 实现runnable接口
- 重写run方法
- 执行线程需要丢入runnable接口实现类,调用start方法。 举个小小的例子:
package com.Thread;
public class threadTest2 implements Runnable{
@Override
public void run() {
for (int i = 0; i < 30; i++) {
System.out.println("正在读书"+i);
}
}
public static void main(String[] args) {
//创建runna接口实现类对象
threadTest2 threadTest2 = new threadTest2();
//调用start方法
//Thread thread = new Thread(threadTest2);
//thread.start();
new Thread(threadTest2).start();//可以用17 18两行代码代换
for (int i = 0; i < 2000; i++) {
System.out.println("正在写"+i);
}
}
}
输出结果:
从这里我们就可以很清楚的看出main线程和主线程是同时执行的,通过cpu调用
- 通过Callable接口:(了解即可)