标签:定义类 add xtend 相同 选择 ring 多进程 pac 封装
进程:就是正在运行的程序,是系统进行资源分配和利用的独立单位,每一个进程都有自己的内存空间和系统资源。
多进程的意义:可以在一个时间段执行多个任务,可以提高CPU的使用率。
线程:在同一个进程内可以执行多个任务,每一个任务就可以看做一个进程
是程序的执行单元/执行路径,是程序使用CPU的最基本单位。
单线程:程序只有一条执行路径。
多线程:程序有多条执行路径。
多线程的意义:为了提高应用程序的使用率,具有随机性。
并行:指在同一个时间段内同时运行多个程序。
并发:值在同一个时间点同时运行多个程序。
JAVA程序的运行原理:由JAVA命令启动了JVM,JVM启动了相当于启动了一个进程,接着由该进程创建一个主线程去调用main方法。
JAVA虚拟机的启动是多线程,因为垃圾回收线程也要启动,否则容易出现内存溢出。 主线程+垃圾回收线程 这样就已经是多线程了。
启动多线程的方法:
方法1
步骤1、自定义类MyThread继承Thread类
步骤2、MyThread类里面重写run()方法 因为不是类里面的代码都需要被线程执行的,run()方法里面包含了被线程执行的代码
步骤3、创建对象
步骤4、启动程序 start()
run()和start()的区别:
run():仅仅是封装被线程执行的代码,直接调用是普通方法。
start():首先启动了线程,然后由JVM去调用线程的run方法。
线程调用方法获取名称:getName()
线程调用方法设置名称:setName()
获取main方法所在线程对象的名称
public static Thread currentThread()
线程调度共有2种:
分时调度:平均分配每个时间段
抢占式调度:优先让优先级高的使用,如果优先级相同,那么会随机选择一个,优先级高的获得时间段多一些。
优先级高表示获取时间段长的几率比较高,次数多就可以看出来
获取线程优先级:public final int getPriority() 默认优先级为5
更改线程优先级:public final int setPriority() 线程优先级的范围为1-10,默认为5
代码
package cn.idcastt; public class MyThread extends Thread { // 重写run方法,用run加ait+/即可 public void run() { for (int x = 0; x < 900; x++) { // 获取线程名称 System.out.println(getName() + ":" + x); } } }
package cn.idcastt; public class MyThreadDemo { public static void main(String[] args) { // 创建对象 MyThread my1 = new MyThread(); MyThread my2 = new MyThread(); // 设置线程名称 my1.setName("哈"); my2.setName("哈哈"); // 设置优先级的值 my1.setPriority(10); my2.setPriority(1); // 启动线程 my1.start(); my2.start(); } }
标签:定义类 add xtend 相同 选择 ring 多进程 pac 封装
原文地址:http://www.cnblogs.com/zengjiao/p/6476565.html