Java并发编程初级篇(一):线程实现与运行的两种方式
2016-11-21 00:00
316 查看
摘要: Java中可以通过两种方式来实现线程,看似一样的效果,他们之间又有什么区别呢?
通过继承Thread类来实现一个线程
线程的创建:
public class MyThread extends Thread { private int num = 5; @Override public void run() { while (num > 0) { System.out.println("Thread:" + Thread.currentThread().getName() + ", consume " + num); num--; try { sleep(100); } catch (InterruptedException e) { e.printStackTrace(); } } } }
线程的运行:
public static void main(String[] args) { MyThread thread1 = new MyThread(); MyThread thread2 = new MyThread(); MyThread thread3 = new MyThread(); thread1.start(); thread2.start(); thread3.start(); }
运行结果:
Thread:Thread-0, consume 5 Thread:Thread-1, consume 5 Thread:Thread-2, consume 5 Thread:Thread-0, consume 4 Thread:Thread-2, consume 4 Thread:Thread-1, consume 4 Thread:Thread-0, consume 3 Thread:Thread-1, consume 3 Thread:Thread-2, consume 3 Thread:Thread-0, consume 2 Thread:Thread-2, consume 2 Thread:Thread-1, consume 2 Thread:Thread-0, consume 1 Thread:Thread-2, consume 1 Thread:Thread-1, consume 1
通过实现Runnable接口来实现一个线程
线程的创建:
public class MyRunnable implements Runnable { private int num = 5; @Override public void run() { while (num > 0) { System.out.println("Thread:" + Thread.currentThread().getName() + ", consume " + num); num--; try { Thread.sleep(100); } catch (InterruptedException e) { e.printStackTrace(); } } } }
第一种运行方式:
public static void main(String[] args) { Thread thread1 = new Thread(new MyRunnable()); Thread thread2 = new Thread(new MyRunnable()); Thread thread3 = new Thread(new MyRunnable()); thread1.start(); thread2.start(); thread3.start(); }
第一种方式运行结果:
Thread:Thread-0, consume 5 Thread:Thread-2, consume 5 Thread:Thread-1, consume 5 Thread:Thread-0, consume 4 Thread:Thread-2, consume 4 Thread:Thread-1, consume 4 Thread:Thread-2, consume 3 Thread:Thread-1, consume 3 Thread:Thread-0, consume 3 Thread:Thread-1, consume 2 Thread:Thread-0, consume 2 Thread:Thread-2, consume 2 Thread:Thread-1, consume 1 Thread:Thread-2, consume 1 Thread:Thread-0, consume 1
第二种运行方式:
public static void main(String[] args) { Runnable runnable = new MyRunnable(); Thread thread1 = new Thread(runnable); Thread thread2 = new Thread(runnable); Thread thread3 = new Thread(runnable); thread1.start(); thread2.start(); thread3.start(); }
第二种方式运行结果:
Thread:Thread-0, consume 5 Thread:Thread-1, consume 4 Thread:Thread-2, consume 3 Thread:Thread-0, consume 2 Thread:Thread-1, consume 1
总结:
通过继承Thread类和实现Runnable接口都能够实现一个线程,但是实现Runnable接口创建的线程类可以交给多个Thread来运行。这类似于需要加工30个零件,第一种方式为交给三个人去做每个人加工10个零件,完成时间取决于最慢的哪个人;第二种方式为一共30个零件交给3个人去加工,速度快的人会为速度慢的人分担加工的零件,总体速度会提升。相关文章推荐
- 两种线程方式实现进度条
- 【Java多线程】实现java线程的两种方式
- java基础知识回顾之java Thread类--java线程实现常见的两种方式实现Runnable接口(二)
- java线程实现的两种方式实例
- 线程的两种实现方式
- JAVA 实现线程的两种方式,举例,详解
- Java【多线程知识总结(5)】比较继承Thread类创建线程和实现Runnable接口创建线程这两种方式
- 建立线程的两种方式:实现方式和继承方式
- 创建线程的两种方式:继承Thread类和实现Runnable接口
- 创建线程的两种方式(实现接口的方式请看实例分析5)
- 详解多线程的两种实现方式以及4个线程,两个线程对j加1,两个线程对j减1完整代码。
- 线程实现的两种方式——用户空间和内核中
- 线程:创建线程有两种方式,一种是继承Thread类,另一种是实现Runnable接口。代码如下:
- Java【多线程知识总结(5)】比较继承Thread类创建线程和实现Runnable接口创建线程这两种方式
- Executor接口实现线程有返回值和无返回值两种方式
- Python:使用threading模块实现多线程编程二[两种方式起线程]
- 实现线程的两种方式
- JAVA多线程实现方式主要有三种:继承Thread类、实现Runnable接口、使用ExecutorService、Callable、Future实现有返回结果的多线程。其中前两种方式线程执行完后都没
- 线程 创建和启动线程的两种方式 实现Runnable接口 继承Thread类 重写唯一方法run()