码迷,mamicode.com
首页 > 编程语言 > 详细

多线程

时间:2017-02-27 23:13:09      阅读:193      评论:0      收藏:0      [点我收藏+]

标签:定义类   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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!