线程的介绍

多进程:在操作系统中能(同时)运行多个任务(程序)

多线程:在同一应用程序中有多个顺序流(同时)执行

线程(thread)的执行过程

首先生成线程(New),然后进入就绪状态(Runable),和其他线程一起抢占cpu执行的时间。抢到cpu执行的时间后,进入运行状态(Running),在运行过程中cpu执行的时间可能会被其他线程抢占了,该线程则又进入就绪状态,等待下一次抢占cpu执行的时间。线程在运行过程中可能会遇到阻塞事件,解除阻塞状态后则又进入就绪状态。线程代码运行完毕后进入死亡状态(Dead)

创建线程的方法:

定义一个线程类,继承Thread类并重写其中的run()方法,run()方法称为线程体。由于java只支持单继承,用这种方法定义的类不能再继承其他类。

class FirstThread extends Thread{
	public void run(){
		for(int i = 0;i < 100;i++){
			System.out.println("FirstThread-->" + i);
		}
	}
}
class Test{
	public static void main(String args[]){
		//生成线程类的对象
		FirstThread ft = new FirstThread();
		//启动线程,进入就绪状态,与main线程抢占cpu
		//ft.run();不能这样写!
		ft.start();

		//main线程
		for(int i =0;i < 100;i++){
			System.out.println("main-->" + i);
		}

		//两个for循环运行在不同的线程当中
	}
}

一旦运行Test类,在程序中存在三个线程:main线程,ft线程,垃圾回收线程。main和ft线程交替运行。多线程运行的结果没有规律,每次结果不同

时间: 2024-10-09 07:50:54

线程的介绍的相关文章

Java线程池介绍

Java线程池介绍 2015-10-24 ImportNew (点击上方公号,可快速关注) 原文:allegro 译文:ImportNew - paddx 链接:http://www.importnew.com/16845.html 根据摩尔定律(Moore’s law),集成电路晶体管的数量差不多每两年就会翻一倍.但是晶体管数量指数级的增长不一定会导致 CPU 性能的指数级增长.处理器制造商花了很多年来提高时钟频率和指令并行.在新一代的处理器上,单线程程序的执行速率确实有所提高.但是,时钟频率

java线程详细介绍

目录(?)[-] 一扩展javalangThread类 二实现javalangRunnable接口 三Thread和Runnable的区别 四线程状态转换 五线程调度 六常用函数说明 使用方式 为什么要用join方法 七常见线程名词解释 八线程同步 九线程数据传递 本文主要讲了java中多线程的使用方法.线程同步.线程数据传递.线程状态及相应的一些线程函数用法.概述等. 首先讲一下进程和线程的区别: 进程:每个进程都有独立的代码和数据空间(进程上下文),进程间的切换会有较大的开销,一个进程包含1

Linux进程管理 (篇外)内核线程简要介绍

关键词:kthread.irq.ksoftirqd.kworker.workqueues 在使用ps查看线程的时候,会有不少[...]名称的线程,这些有别于其它线程,都是内核线程. 其中多数内核线程从名称看,就知道其主要功能. 比如给中断线程化使用的irq内核线程,软中断使用的内核线程ksoftirqd,以及work使用的kworker内核线程. 本文首先概览一下Linux都有哪些内核线程,然后分析创建内核线程的API. 在介绍内核线程和普通线程都有哪些区别? 最后介绍主要内核线程(irq/ks

java线程池介绍与使用

在同等数量级的操作下,使用线程池的效率要远远高于单线程.线程池可以降低创建线程带来的开销.而线程池中的线程结束后进行的是回收操作而不真的将线程销毁.而在这个过程过,线程池带来的内存消耗肯定会大于单线程.在使用线程池的时候要慎重这个问题.下面进行两个方法,分别来测试下. import java.util.LinkedList; import java.util.List; import java.util.Random; import java.util.concurrent.LinkedBloc

java 的线程池介绍

参考文献: http://www.jianshu.com/p/87bff5cc8d8c http://www.jianshu.com/p/edd7cb4eafa0 在Java应用中如果需要频繁的去创建大量线程去完成任务,肯定会对性能有很大的影响.因为系统在创建和销毁线程上需要消耗太多的资源,开销很大. 所以在这种情况下可以考虑线程池.有以下优点: 1) 降低资源消耗 :通过重复利用已创建的线程降低线程创建和销毁造成的消耗: 2)提高响应速度 : 当任务到达时,任务可以不需要等到线程创建就能立即执

Windows内核之线程简单介绍

1 线程定义 <1> 内核对象,操作系统用它来对线程实施管理.内核对象也是系统用来存放线程统计信息的地方 <2>还有一个是线程堆栈.它用于维护线程在运行代码时须要的全部函数參数和局部变量. 2 线程和进程的差别 <1>进程是不活泼的. 进程从来不运行不论什么东西.它仅仅是线程的容器. <2>线程在它的进程地址空间中运行代码,而且在进程的地址空间中对数据进行操作. <3>线程共享进程的地址控件 <4>线程仅仅有一个内核对象和一个堆栈,保

第一章——线程的介绍

1 什么是线程 线程,有时被称为轻量级进程,是程序执行的最小单元.一个标准的线程由线程ID.程序计数器(pc).一组寄存器和堆栈组成.通常,一个进程由多个线程组成,每个线程之间共享进程的内存空间(包括代码段.数据段.堆等)及一些进程级的资源(如打开的文件描述符和信号).如下图所示: 2 线程的访问权限 线程的访问非常自由,它可以访问进程内存里的所有数据,同时线程也拥有自己IDE私有存储空间,包括以下几方面: 1)栈 2)线程局部存储(TLS). 3)寄存器(包括PC寄存器) 3 线程调度和优先级

Qemu线程池介绍

有时我们希望把一部分工作通过创建线程的方式异步执行,这样我们可以在执行任务的同时,继续执行其他任务.但是如果这种需求比较多的话,频繁的创建和销毁线程带来很大的性能损耗.如果我们能创建一个或一些线程,然后重复使用它们,就可以避免这个问题. Qemu的实现 qemu模仿glib实现了线程池的功能,目前qemu中线程池主要应用在raw文件的支持上,当linux-aio不可用时,就像glibc,通过线程实现aio机制.我们也可看到,代表线程池中的线程成员的数据结构 ThreadPoolElement 就

赠送 HttpClient 和HttpURLConnection 的轻型网络 --》线程池介绍和网络请求流程

转载注明出处 :http://blog.csdn.net/codingandroid/article/details/41748743 作为一个框架,肯定要去处理一些比较复杂的情况,正常情况下当然不会阻塞,当情况比较复杂的时候,会出现前多个网络请求的情况,那对于这种情况我们规范去管理当然是最好的了,于是我们需要一个线程池. 首先解释一下,什么叫线程池  : 每当启动一个线程的时候,我们通常代码是   new Thead(){}.start();  new 一个对象 里面又要new一个runnab