javase重新开始系列之多线程基础

进程(process):一个正在执行的程序,称为进程。(单个cpu无法同时运行多个进程,只能交替轮流运行)

线程是进程的一个执行序列,一个进程可以包含多个线程。

线程的生命周期:



Java提供了Thread类来实现多线程。

java中提供了继承Thread类和实现Runnable接口两种方法用于创建线程类。(还可以使用第三方库,略)

继承Thread类:

可通过继承Thread类,并重写其中的run()方法来定义线程体,以实现线程的具体行为,然后创建该子类的对象,并启动线程。启动线程:线程类对象.start()

public class  线程类名 extends Thread {
	……	
	public void run(){
		…… //编写线程的代码
	}
}

实现Runnable接口:

任何类都可以实现Runnable接口,而这个类的实例将用一个线程来调用,启动该类的run()方法。Runnable接口只有一个run()方法,其作用和Thread类的run()方法相同。


public class  目标类名 implements Runnable {
	……	
	public void run(){
		…… //编写线程的代码
	}
}

启动线程:

以目标类为参数创建 Thread 类的对象 .start(); 例如

PingPong2 pp1=newPingPong2(“ping”,500));//Pingpong2实现Runnable接口。

Thread t1=new Thread(pp1);

t1.start();



两种方法的对比:

继承Thread类创建线程的方法简单方便可以直接操作线程,无需使用Thread.currentThread()但不能再继承其他类;
使用Runnable接口方法可以CPU,代码和数据分开,形成清晰的模型;还可以从其他类继承;保持程序风格的一致性


另:

关于线程栈和线程的变量

线程栈是 指某时刻时内存中线程调度的栈信息,当前调用的方法总是位于栈顶。


Runtime类(运行时类)和Process类(进程类)

Runtime:提供JVM启动系统接口及运行平台的相关信息。在程序运行时才产生该类对象。

Process:与当前在执行的进程相关的类。

例:运行记事本并输出终止值

public class RuntimeTest {
	public static void main(String[] args) {
		Runtime runtime = Runtime.getRuntime();
		System.out.println("running notepad.exe...");
		try {
			Process p = runtime.exec("notepad.exe");
			int exitValue = p.waitFor();
			System.out.println("stopping run notepad.exe");
			System.out.println("exitvalue:"+exitValue);
		} catch (IOException | InterruptedException e) {
			// TODO 自动生成的 catch 块
			//e.printStackTrace();
			System.out.println("runtime error");
		}
	}
}
(未完待补充)


猜你喜欢

转载自blog.csdn.net/jasonsama/article/details/52210251