JAVA多线程学习(2)----JAVA实现多线程
JAVA多线程的类:Thread 先看看thread 从上面可以看出,有两种创建多线程的方法:
-
继承Thread,重写run方法 实现Runnable,重写ruN方法
继承Thread
public class Main extends Thread { @Override public void run() { for (int i = 0; i < 200; i++) { System.out.println("多多多多敲代码"); } } public static void main(String[] args) { Main test = new Main(); test.run(); for (int i = 0; i < 2000; i++) { System.out.println("i = " + i); } } } //输出结果,先输出完200多多多多敲代码,再到2000次i 部分展示: 多多多多敲代码 多多多多敲代码 多多多多敲代码 多多多多敲代码 i = 0 i = 1 i = 2 i = 3 i = 4
而.start的话交替执行,循环次数多效果才明显
public class Main extends Thread { @Override public void run() { for (int i = 0; i < 200; i++) { System.out.println("多多多多敲代码"); } } public static void main(String[] args) { Main test = new Main(); test.start(); for (int i = 0; i < 2000; i++) { System.out.println("i = " + i); } } } //输出结果,交替执行 部分展示: 多多多多敲代码 多多多多敲代码 多多多多敲代码 i = 1 多多多多敲代码 多多多多敲代码 多多多多敲代码
实现Runnable接口
public class TestThread implements Runnable{ @Override public void run() { for (int i = 0; i < 20; i++) { System.out.println("多多多多敲代码"); } } public static void main(String[] args) { TestThread testThread = new TestThread(); //通过线程对象来开启我们的线程,代理 //new Thread(testThread).run(); new Thread(testThread).start(); for (int i = 0; i < 2000; i++) { System.out.println("i = " + i); } } } 运行结果与上面一致,不做过多的描述
故此可得到下图
那上面两个实现方式有什么区别呢?
- 继承Thread类 ①子类继承Thread类具备多线程能力 ②启动方式:子类.start() ③不建议:单继承局限性
- 实现Runnable接口 ①实现Runnable具备多线程能力 ②启动方式:传入目标对象+Thread对象.start() ③建议:灵活方便,避免了单继承局限性
文章大部分内容是个人整理,参考引用java3y的文章
上一篇:
通过多线程提高代码的执行效率例子
下一篇:
性能指标:QPS、TPS、系统吞吐量理解