进 程:Process线 程:Thread多线程:MultiThread并 发:Concurrent
多任务:同一时刻“似乎”有多个程序在同时运行。实际上:只有当你有一台多处理器的机器,不然并发处理就是骗人的。 一个CPU时,操作系统将CPU时间划分成小的片段,分配给不同 的程序,同一时刻只有一段代码是运行的。
JDK
接口:public interface Runnable{ void run(); }所有实现Runnable接口的类都可以被启动为一个新线程,新线程会执行该实例的run方法,当run方法执行完毕,线程结束,并无法重新启动,只能重新生成实例,启动一个新线程。Thread类:public class Thread implements Runnable { public native void start( ) { this.run(); } public void run() { return; }}Thread类是实现了Runnable接口的一个实例,它代表一个线程的实例,并且,启动线程的唯一方法就是通过Thread类的start()实例方法:Thread t = new Thread();t.start();
start()方法是一个native方法,它将启动一个新线程,并执行run()方法。Thread类默认的run()方法什么也不做就退出了。注意:直接调用run()方法并不会启动一个新线程,它和调用一个普通的java方法没有什么区别。
自定义线程方法1:自己的类extend Thread,并复写run()方法,就可以启动新线程并执行自己定义的run()方法。例如:public class MyThread extends Thread { public run() { System.out.println("MyThread.run()"); }}在合适的地方启动线程:new MyThread().start();方法2:自定义的类已经继承了一个基类,无法直接继承Thread(Java不支持多继承哦),这样就必须实现一个Runnable接口public class MyThread extends OtherClass implements Runnable{ public run(){....}}实例化一个Thread,以自定义类的实例为参数MyThread mythread = new MyThread();Thread t = new Thread(mythread);t.start();
事实上,当传入一个Runnable target参数给Thread后,Thread的run()方法就会调用target.run(),参考JDK源代码:public void run() { if (target != null) { target.run(); }}
转载于:https://www.cnblogs.com/nanshouyong326/archive/2009/06/26/1511405.html
