怎么样网站建设温州cms建站系统
web/
2025/10/4 1:58:02/
文章来源:
怎么样网站建设,温州cms建站系统,wpml wordpress,盐城市城市建设投资公司网站一、进程与线程
认识
程序由指令和数据组成#xff0c;简单来说#xff0c;进程可以视为程序的一个实例 大部分程序可以同时运行多个实例进程#xff0c;例如记事本、画图、浏览器等少部分程序只能同时运行一个实例进程#xff0c;例如QQ音乐、网易云音乐等 一个进程可以…一、进程与线程
认识
程序由指令和数据组成简单来说进程可以视为程序的一个实例 大部分程序可以同时运行多个实例进程例如记事本、画图、浏览器等少部分程序只能同时运行一个实例进程例如QQ音乐、网易云音乐等 一个进程可以分为多个线程线程为最小调度单位进程则是作为资源分配的最小单位 在Windows中进程是不活动的只是作为线程的容器
对比
进程之间基本相互独立而线程存在于进程内是进程的一个子集进程拥有的资源供其内部的线程共享进程间通信较为复杂 同一台计算机的进程通信称为IPC不同计算机之间的进程通信需要通过网络遵守共同的协议例如HTTP 线程更轻量线程上下文切换成本一般上要比进程上下文切换低
二、概念总览
并行与并发
同一时刻同时发生即为并行同一时段同时发生即为并发
同步与异步
需要等待结果返回才能继续运行就是同步不需要等待结果返回自顾自地运行就是异步
三、创建和运行线程
方法一直接使用Thread Testpublic void test1(){//创建一个新线程Thread thread1new Thread(t1){//设置线程的具体任务public void run(){log.info(success);}};//启动线程thread1.start();log.info(error);}方法二使用Runnable配合Thread
用这种方式将线程Thread和任务Runnable分开更容易组件化操作 Testpublic void test2(){Runnable runnablenew Runnable() {Overridepublic void run() {log.info(success);}};//创建新线程并命名Thread thread2new Thread(runnable,t2);thread2.start();log.info(error);}方法三使用FutureTask配合Thread Testpublic void test4() throws ExecutionException, InterruptedException {FutureTaskInteger futureTasknew FutureTask(new CallableInteger() {//使用Callable还有一个好处就是能够返回值而Runnable不行Overridepublic Integer call() throws Exception {log.info(success);Thread.sleep(1000);return 100;}});Thread thread4new Thread(futureTask,t4);thread4.start();//捕获到线程执行完成并获取返回值进行后续处理Integer resultfutureTask.get();log.info(error:{},result);}四、查看进程线程的方法
Windows
可以通过任务管理器来看tasklist查看进程taskkill杀死进程
Linux
ps -ef 查看所有进程ps -ef | grep java 查询带Java的进程kill 杀死进程kill -9 强制杀死进程top 进程排名
Java
jps查看所有Java进程jconsole查看某个Java进程中线程的运行情况图形界面具体操作步骤如下
五、线程运行的原理
栈与栈帧
每个栈由多个栈帧组成对应着每次方法调用时所占用的内存每个线程只能有一个活动栈帧对应着当前正在执行的那个方法
上下文切换
由一个线程切换到另一个线程即上下文切换通俗来说也就是要把线程运行的环境换一下换成线程之前运行时的环境专业一点就是每次线程切换时操作系统会保存当前线程的状态并恢复另一个线程的状态状态包括程序计数器、栈帧中的信息如局部变量、操作数栈、返回地址等
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/86539.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!