您的位置:首页 > 编程语言 > Java开发

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

2016-08-15 13:04 411 查看
进程(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");
}
}
}
(未完待补充)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: