标签:run 多个 Thread 线程 Java 多线程 cpu
首先理清几个基本概念:
程序:为完成特定任务,用某种语言编写的一组指令的集合。即一段静态的代码(还没运行起来)
进程:是程序的一次执行过程,也就是说程序运行起来了,加载到了内存中,并占用了cpu的资源。这是一个动态的过程:有自身的产生、存在和消亡的过程,这也是进程的生命周期。
线程:进程可进一步细化为线程,是一个程序内部的执行路径。
若一个进程同一时间并行执行多个线程,那么这个进程就是支持多线程的。
线程是cpu调度和执行的单位,每个线程拥有独立的运行栈和程序计数器(pc),线程切换的开销小。
多线程:是指程序当中包含多个执行单元,即在一个程序中可以同时运行多个不同的线程来执行不同的任务,也就是说允许单个线程创建多个并行执行的线程来完成各自的任务。
Java线程的分类:用户线程和守护线程
java的gc()垃圾回收线程就是一个守护线程
守护线程是用来服务用户线程的,通过start()方法前调用thread.serDaemon(True)可以把一个用户线程变成守护线程
并行和并发:
并行:多个cpu同时执行多个任务
并发:一个cpu同时执行多个任务
多线程的优点
提高应用程序的相应。
提高计算机cpu的利用率
改成程序结构。将复杂的进程分成多个线程,独立运行。
线程的创建与启动
多线程实现的原理
java的jvm允许程序运行多个线程,多线程可以通过Java中的java.lang.Thread类来体现
Thread类的特性
每个线程都是通过每个特定的Thread对象的run()方法来完成操作,经常把run()方法的主体称 为线程体
通过Thread方法的start()方法来启动这个线程,而非调用run()
多线程的创建,方式一:继承于Thread类
1.创建一个继承于Thread类的子类
2.重写Thread类的run()方法
3.创建Thread类的子类的对象()
4.通过此对象调用start()来启动一个线程
代码实现:多线程执行同一段代码
package com.Thread.demo1; public class demo1 extends Thread{ @Override public void run(){ for(int i = 0;i<100;i++){ if(i % 2 == 0){ System.out.println(Thread.currentThread().getName() + ":\t" + i); } } } public static void main(String[] args){ demo1 test1 = new demo1(); test1.start(); demo1 test2 = new demo1(); test2.start(); new demo1().start(); System.out.println("主线程"); } }
标签:run,多个,Thread,线程,Java,多线程,cpu 来源: https://www.cnblogs.com/99kol/p/16675783.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。