我们在电脑中运行的一个网页,软件,这些都是一个进程,一个应用程序就是一个进程。而一个进程中会有多个线程,线程结束的时候进程不会结束,但是进程结束的时候线程一定会结束。
线程就是程序内部的一个独立的运行单位。
单线程:
单线程就是当一个程序执行完后才会执行另外一个程序,比如:
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接口实现,这里就不再举例。
分享到:
相关推荐
Unity3D中的多线程及使用多线程1
mysql查看当前执行线程_关闭当前的某些线程 show processlist_kill每个与mysqld的连接都在一个独立的线程里运行,您可以使用SHOW
多线程1.ppt 多线程1.ppt 多线程1.ppt 多线程1.ppt 多线程1.ppt
1.线程的引出 2.如何实现用户级线程的切换 3.引出内核级线程 1.线程的引出 2.如何实现用户级线程的切换 3.引出内核级线程
易语言正确退出线程源码,正确退出线程,多线程,正常结束线程,提示信息,发送消息
//线程1执行的函数//线程2执行的函数//创建线程id//创建线程p1 去执行 th1函数 (不带参数)//创建线程p2 去执行 th2函数 (带参数)//调
java多线程每个线程挨着打印ABC的4种实现方式,有4个线程t1、t2、t3、t4,t1打印A后t2打印A再t3打印A再t4打印A,然后从新回到t1打印B再t2打印B...t4打印B... 4个线程轮流打印abc... 一个线程可以理解为一个人,打印...
//线程1线程句柄 HANDLE hThread2; //线程2线程句柄 HANDLE hThread3; //线程3线程句柄 在增加三个结构体类型的变量,用做线程函数的参数传递; HANDLE hThread1; //线程1线程句柄 HANDLE hThread2; //线程2...
1. 编写程序,使用两个线程,一个队列, 其中一个线程从键盘读取数据,放入到队列中,直到读取的数据是字符串quit则结束,线程的任务就是循环读取数据直到特定的字符串quit。另外一个线程,不断的从队列中读取数据...
Java多线程读大文件 java多线程写文件:多线程往队列中写入数据
几个月总结和收集资料第一套:C++_Socket网络编程大全linux SOCKET编程源码linux_Socket_函数集多线程编程Linux网络编程多线程编程程存储和共享内存等10多个资料...
1、创建和终止线程 在MFC程序中创建一个线程,宜调用AfxBeginThread函数。该函数因参数不同而具有两种重载版本,分别对应工作者线程和用户接口(UI)线程。 工作者线程 CWinThread *AfxBeginThread( AFX_...
1.和用户级相比,核心级线程有什么不同 2.内核级线程如何切换 3.用户级线程和内核级线程的对比 1.和用户级相比,核心级线程有什么不同 2.内核级线程如何切换
线程的执行是由系统内核来管理的,通常被称为内核线程或者k-线程。不同于由操作系统内核调度的线程,轻量级线程由应用级线程调度程序来负责调度。轻量级线程也有它的缺点
python多线程详解目录python多线程详解一、线程介绍什么是线程为什么要使用多线程二、线程实现 threading模块 自定义线程 守护线程 主线程等待子
1. 什么是线程: 线程就是程序中单独顺序的流控制。线程本身不能运行,它只能用于程序中。 2. 什么是多线程: 多线程则指的是在单个程序中可以同时运行多个不同的线程执行不同的任务. 说明: 线程是程序内的顺序...
线程间通信的本质和原理,以及Android 中的多线程线程间交互一个线程启动别的线程:new Thread().start()、Executor.execute
用模式对话框来展示操作进度。 具体操作在线程中进行。 通过在线程中进行操作并修改表示进度的变量, 然后再对话框中通过定时器来设置进度,实现多线程情况下的进度控制。
多线程显示图像,一边改变图像一边显示图像,只有当图像改变工作结束的时候才显示图像,代码供参考,按需修改。
程序模拟了火车站售票系统,程序中使用了多线程的实现方法,并用多种方法实现了线程的同步,麻雀虽小,五脏俱全。