线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位。一个进程可能包括多个线程,在同一进程中的多条线程将共享该进程中的全部系统资源。所以当一个进程结束的时候,其所属的线程也会结束,但是当线程结束,进程不一定结束。
在Java语言中,从JDK1.0开始就有多线程,在多线程的实现上面有多种形式,本例以继承Thread类。
在继承java.lang.Thread类后,需要复写public void run()方法。其方法的主体也就是在启动线程之后所执行的方法体。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| class MyThread extends Thread {
private String threadName ;
public MyThread( String threadName) { this.threadName = threadName; }
@Override public void run() { for (int i = 0; i < 100; i++) { System.out.println(threadName + " - " + i ); } } }
|
有了多线程的方法,那么就需要启动我们的线程,在启动线程上需要调用Thread类的public void start()方法。只有在线程被启动后,JVM(java 虚拟机)才会去调用run方法,同一个线程只能启动一次。
测试
File : ThreadDemo.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
| package com.devnp;
class MyThread extends Thread {
private String threadName ;
public MyThread( String threadName) { this.threadName = threadName; }
@Override public void run() { for (int i = 0; i < 100; i++) { System.out.println(threadName + " - " + i ); } } }
public class ThreadDemo {
public static void main(String[] args) { MyThread myThread1 = new MyThread("Thread one"); MyThread myThread2 = new MyThread("Thread two"); MyThread myThread3 = new MyThread("Thread three");
myThread1.start(); myThread2.start(); myThread3.start(); } }
|
在运行结果,会发现线程之间是交替输出,也就是每个线程在执行的时候根据资源的分配交替执行。
Author:
Darren Du
License:
Copyright (c) 2019 MIT LICENSE