JAVA多线程的概述及创建

一、线程和进程

进程是指正在运行的程序,是系统进行资源分配和调用的独立单位。每一个进程都有它自己的内存空间和系统资源。线程是进程中的单个顺序控制流,是一条执行路径, 一个进程如果只有一条执行路径,则称为单线程程序。一个进程如果有多条执行路径,则称为多线程程序。一个java程序想要运行,首先由java命令启动JVM,JVM启动就相当于启动了一个进程。接着有该进程创建了一个主线程去调用main方法。java虚拟机的启动至少调用了main线程和用于垃圾回收的线程所以为多线程程序。

如何实现多线程程序呢?java有两种方式实现多线程程序:方式1:继承Thread类。 

  A:自定义类MyThread继承Thread类。
  B:MyThread类里面重写run(),重新的代码部分就是想要被多线程程序执行的代码。
 C:创建对象:MyThread my = new MyThread();
 D:启动线程:my.start();注意此处,调用的是线程对象的start()方法,run()方法仅仅封装被线程执行的代码,直接调用是普通方法, start()方法调用之后,首先启动了线程,然后再由jvm去调用该线程的run()方法。

public class MyThread extends Thread {
	@Override
	public void run() {
		for (int x = 0; x < 200; x++) {
			System.out.println(x);
		}
	}

}
//测试类
public class MyThreadDemo {
	public static void main(String[] args) {
		// 创建两个线程对象
		MyThread my1 = new MyThread();
		MyThread my2 = new MyThread();

		my1.start();
		my2.start();
	}
}

方式2:实现Runnable接口(相比较而言解决了java单继承的问题,当一个有继承关系的类想要实现多线程可以实现该接口)

  A:自定义类MyRunnable实现Runnable接口 :class MyRunnable implements Runnable(){}
  B:重写run()方法
  C:创建MyRunnable类的对象 MyRunnable mr =new MyRunnable();
  D:创建Thread类的对象,并把C步骤的对象作为构造参数传递 Thread t1 = new Thread(mr);                                                          

public class MyRunnable implements Runnable {

	@Override
	public void run() {
		for (int x = 0; x < 100; x++) {
			// 由于实现接口的方式就不能直接使用Thread类的方法了,但是可以间接的使用
			System.out.println(Thread.currentThread().getName() + ":" + x);
		}
	}

}
//测试类
public class MyRunnableDemo {
	public static void main(String[] args) {
		// 创建MyRunnable类的对象
		MyRunnable my = new MyRunnable();
		// Thread(Runnable target, String name)
		Thread t1 = new Thread(my, "Thread-0");
		Thread t2 = new Thread(my, "Thread-1");

		t1.start();
		t2.start();
	}
}

猜你喜欢

转载自blog.csdn.net/Will_Zhan/article/details/81450231