程序、进程、线程是什么呢?
程序:一段静态的代码
进程:是指运行中的应用程序,每一个进程都有自己独特的内存空间。进程是线程的容器,对于一个应用程序可以同时启动多个进程。
线程:程序里面不同的执行线索。
线程和进程的区别:
多进程:在操作系统中能同时运行多个 。
多线程:在同一个应用程序中有多条执行线索。
线程的创建和启动:
第一种方法:
1、定义Thread的子类并重写run方法
class ClockThread extends Thread
{
public void run()
{
}
}
2、生成该类的对象:
ClockThread clockThread=new ClockThread();
3、调用start方法启动线程
clockThread.start();
注意:调用start方法后,线程进入就绪队列中等待。
时钟线程小案例:
package thread;
import java.util.Date;
public class ClockThreadDemo {
public static void main(String[] args){
ClockThread clockThread=new ClockThread();
clockThread.start();
System.out.println("main");
}
}
class ClockThread extends Thread
{
public void run() {
while(true)
{
System.out.println(new Date());
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
第二种方法:
1、定义线程类实现Runnable接口:
class ClockThread implements Runnable
{
//用于定义线程应完成的任务
public void run()
{
}
}
2、生成该类的对象,在定义一个Thread对象,传入实现Runnable的类对象:
ClockThread clockThread=new ClockThread();
Thread thread=new Thread(clockThread);
3、启动线程:
thread.start();
时钟线程小案例:
package thread;
import java.util.Date;
public class ClockThreadDemo {
public static void main(String[] args){
ClockThread clockThread=new ClockThread();
Thread thread=new Thread(clockThread);
thread.start();
System.out.println("main");
}
}
class ClockThread implements Runnable
{
public void run() {
while(true)
{
System.out.println(new Date());
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
一般情况下,第二种比较实用。
我们还可以用匿名对象来实现:
new Thread(new Runnable() {
@Override
public void run()
{
//线程要完成的任务
}
}).start();