我们在电脑中运行的一个网页,软件,这些都是一个进程,一个应用程序就是一个进程。而一个进程中会有多个线程,线程结束的时候进程不会结束,但是进程结束的时候线程一定会结束。
线程就是程序内部的一个独立的运行单位。
单线程:
单线程就是当一个程序执行完后才会执行另外一个程序,比如:
public class threadtest {
public static void main(String[] args) {
threadtest t=new threadtest();
t.a();
}
public void a(){
b();
System.out.println("AAA运行啦");
}
public void b(){
c();
System.out.println("BBB运行啦");
}
public void c(){
System.out.println("CCC运行啦");
}
}
这个程序的运行结果:
CCC运行啦
BBB运行啦
AAA运行啦
从程序中我们可以看到,在a()方法中条用了b()方法,所以只有当b()执行完毕后才会执行a();同理,当c()执行完后才会执行b();这样我们就得到了这样的结果。我们现在所写的程序一般都是单线程的程序。
public class threadtest extends Thread{
public static void main(String[] args) {
threadtest t=new threadtest();
t.d();
}
public void a(){
System.out.println("AAA运行啦");
}
public void b(){
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("BBB运行啦");
}
public void c(){
System.out.println("CCC运行啦");
}
public void d(){
a();
b();
c();
System.out.println("都运行啦");
}
}
运行结果是:
AAA运行啦
BBB运行啦
CCC运行啦
都运行啦
即使我在其中休眠了三秒,程序还是一次执行的,但是这是把代码的调用放到了一个独立的运行单元,让多个调用并行执行,这也是多线程模型。
什么是多线程呢?就是多个调用并行执行,这就是多线程,可以多个同时执行;
那么,我们平常怎么来使用线程呢?一般我们都会继承一个Thread类,重写里边的run()方法来实现。
例如:
public class threadtest extends Thread{
public static void main(String[] args) {
threadtest t=new threadtest();
t.d();
}
public void a(){
System.out.println("AAA运行啦");
}
public void b(){
//c();
start();
System.out.println("start返回啦");
}
public void c(){
System.out.println("CCC运行啦");
}
public void d(){
a();
b();
c();
System.out.println("都运行啦");
}
public void run(){
try {
Thread.sleep(3000);//休眠3秒
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("BBB运行啦");
}
}
运行结果:
AAA运行啦
start返回啦
CCC运行啦
都运行啦
BBB运行啦
从运行结果我们可以看出,b()方法是独立执行的,并没有说b()执行完后才会执行c(),start()只是启动了线程,随即便会返回,并不需要执行完后返回。
当然还有一种方法就是通过Runnable接口实现,这里就不再举例。
线程就是程序内部的一个独立的运行单位。
单线程:
单线程就是当一个程序执行完后才会执行另外一个程序,比如:
public class threadtest {
public static void main(String[] args) {
threadtest t=new threadtest();
t.a();
}
public void a(){
b();
System.out.println("AAA运行啦");
}
public void b(){
c();
System.out.println("BBB运行啦");
}
public void c(){
System.out.println("CCC运行啦");
}
}
这个程序的运行结果:
CCC运行啦
BBB运行啦
AAA运行啦
从程序中我们可以看到,在a()方法中条用了b()方法,所以只有当b()执行完毕后才会执行a();同理,当c()执行完后才会执行b();这样我们就得到了这样的结果。我们现在所写的程序一般都是单线程的程序。
public class threadtest extends Thread{
public static void main(String[] args) {
threadtest t=new threadtest();
t.d();
}
public void a(){
System.out.println("AAA运行啦");
}
public void b(){
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("BBB运行啦");
}
public void c(){
System.out.println("CCC运行啦");
}
public void d(){
a();
b();
c();
System.out.println("都运行啦");
}
}
运行结果是:
AAA运行啦
BBB运行啦
CCC运行啦
都运行啦
即使我在其中休眠了三秒,程序还是一次执行的,但是这是把代码的调用放到了一个独立的运行单元,让多个调用并行执行,这也是多线程模型。
什么是多线程呢?就是多个调用并行执行,这就是多线程,可以多个同时执行;
那么,我们平常怎么来使用线程呢?一般我们都会继承一个Thread类,重写里边的run()方法来实现。
例如:
public class threadtest extends Thread{
public static void main(String[] args) {
threadtest t=new threadtest();
t.d();
}
public void a(){
System.out.println("AAA运行啦");
}
public void b(){
//c();
start();
System.out.println("start返回啦");
}
public void c(){
System.out.println("CCC运行啦");
}
public void d(){
a();
b();
c();
System.out.println("都运行啦");
}
public void run(){
try {
Thread.sleep(3000);//休眠3秒
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("BBB运行啦");
}
}
运行结果:
AAA运行啦
start返回啦
CCC运行啦
都运行啦
BBB运行啦
从运行结果我们可以看出,b()方法是独立执行的,并没有说b()执行完后才会执行c(),start()只是启动了线程,随即便会返回,并不需要执行完后返回。
当然还有一种方法就是通过Runnable接口实现,这里就不再举例。