进程和线程的概述

1. 程序,线程,进程的概念:

程序:编写的静态代码
进程:程序的一次执行的过程。
线程:能在进程中独立完成的子任务。

2 Java实现多线程的两种方法:

继承Thread类
代码:

public class MyThread extends Thread{

    @Override
    public void run() {
        // TODO Auto-generated method stub
        super.run();
        System.out.println("继承Thread的线程:"+Thread.currentThread().getName());

    }
    public static void main(String[] args) {
        MyThread  thread=new MyThread();
        System.out.println("当前运行的线程:"+Thread.currentThread().getName());
        thread.start();
    }

}
################################
运行结果:
当前运行的线程:main
继承Thread的线程:Thread-0

注意:main线程不是主函数的main,而是系统的主线程.

Thread.currentThread:表示的是当前运行的线程。
Thread类其实是实现的Runnable接口的:我们看源码:

public class java.lang.Thread implements java.lang.Runnable {
。。。
}

实现Runnable接口
代码:

public class MyRun implements Runnable{

    public MyRun()
    {
        System.out.println("当前运行的线程:"+Thread.currentThread().getName());
    }
    @Override
    public void run() {
        // TODO Auto-generated method stub
        System.out.println("实现Runnable接口:"+Thread.currentThread().getName());

    }

}
public static void main(String[] args) {
        MyRun run=new MyRun();
        Thread thread1=new Thread(run);
        Thread thread2=new Thread(run);
        thread1.start();
        thread2.start();
    }
###################################
结果:当前运行的线程:main
实现Runnable接口:Thread-0
实现Runnable接口:Thread-1

Thread类的构造函数:

构造方法摘要
Thread()???????????分配新的?Thread?对象。
Thread(Runnable?target)???????????分配新的?Thread?对象。
Thread(Runnable?target,?String?name)???????????分配新的?Thread?对象。
Thread(String?name)???????????分配新的?Thread?对象。
Thread(ThreadGroup?group,?Runnable?target)???????????分配新的?Thread?对象。
Thread(ThreadGroup?group,?Runnable?target,?String?name)???????????分配新的?Thread?对象,以便将?target?作为其运行对象,将指定的?name?作为其名称,并作为?group?所引用的线程组的一员。
Thread(ThreadGroup?group,?Runnable?target,?String?name, long?stackSize)???????????分配新的?Thread?对象,以便将?target?作为其运行对象,将指定的?name?作为其名称,作为?group?所引用的线程组的一员,并具有指定的堆栈大小。
Thread(ThreadGroup?group,?String?name)???????????分配新的?Thread?对象。

两种多线程的创建方式的对比

正如前面讲的Thread类其实是实现Runnable接口,所以对着两者比较我们可以引申为时extends和implements的比较。了解Java的继承和多态的知识就会知道后者好。
原因:第一,Java单一继承,接口可以多种实现。第二,利用接口有利于降低了程序之间的耦合度

线程之间的状态:

枚举常量摘要
BLOCKED???????????受阻塞并且正在等待监视器锁的某一线程的线程状态。
NEW???????????至今尚未启动的线程的状态。
RUNNABLE???????????可运行线程的线程状态。
TERMINATED???????????已终止线程的线程状态。
TIMED_WAITING???????????具有指定等待时间的某一等待线程的线程状态。
WAITING???????????某一等待线程的线程状态。

流程图:

现在我们来讲讲为什么用多线程:

现在的cpu发展迅速,从单核的到多核,这时我们将面临一个问题:如何充分的利用cpu呢?这时多线程的出现解决了这个问题。简单点来说:线程可以有效地降低程序的开发和维护等成本,同时提升复杂应用程序的性能。
具体的来说:

  • 1.发挥多处理器的强大功能
  • 2.在单处理器系统上获得更高的吞吐量
  • 3 建模的简单性
  • 4 异步事件的简化处理

原文地址:http://blog.51cto.com/12666319/2132505

时间: 2024-10-13 21:22:09

进程和线程的概述的相关文章

进程与线程的概述

1:要想了解多线程,必须先了解线程,而要想了解线程,必须先了解进程,因为线程是依赖于进程而存在. 2:什么是进程? 通过任务管理器我们就看到了进程的存在. 而通过观察,我们发现只有运行的程序才会出现进程. 进程:就是正在运行的程序. 进程是系统进行资源分配和调用的独立单位.每一个进程都有它自己的内存空间和系统资源. 3:多进程有什么意义呢? 单进程的计算机只能做一件事情,而我们现在的计算机都可以做多件事情. 举例:一边玩游戏(游戏进程),一边听音乐(音乐进程). 也就是说现在的计算机都是支持多进

进程通信、线程同步 概述

进程通信.线程同步  概述 线程同步 CRITICAL_SECTION 临界区. 同一时刻只能由一个线程访问的资源,叫临界资源,比如打印机.访问临界资源的代码叫临界代码区域. CRITICAL_SECTION对象没有句柄,不能被其他线程共享. 线程同步之 CRITICAL_SECTION . http://blog.csdn.net/chuchus/article/details/24494253 MUTEX 互斥量. MUTEX对象有句柄,所以也可用于不同进程的线程之间做同步. MUTEX有超

进程与线程概述

进程和线程 谈到多线程,就得先讲进程和线程的概念. 进程 进程可以理解为受操作系统管理的基本运行单元.360浏览器是一个进程.WPS也是一个进程,正在操作系统中运行的".exe"都可以理解为一个进程 线程 进程中独立运行的子任务就是一个线程.像QQ.exe运行的时候就有很多子任务在运行,比如聊天线程.好友视频线程.下载文件线程等等. 为什么要使用多线程 如果使用得当,线程可以有效地降低程序的开发和维护等成本,同时提升复杂应用程序的性能.具体说,线程的优势有: 1.发挥多处理器的强大能力

Java多线程1:进程与线程概述

进程和线程 谈到多线程,就得先讲进程和线程的概念. 进程 进程可以理解为受操作系统管理的基本运行单元.360浏览器是一个进程.WPS也是一个进程,正在操作系统中运行的".exe"都可以理解为一个进程 线程 进程中独立运行的子任务就是一个线程.像QQ.exe运行的时候就有很多子任务在运行,比如聊天线程.好友视频线程.下载文件线程等等. 创建线程的方式 创建线程有两种方式: 1.继承Thread,重写父类的run()方法. public class MyThread00 extends T

1:进程与线程概述

进程:进程可以理解为操作系统管理的基本运行单元.ie浏览器是一个进程,word是一个进程,正在操作系统中运行的“.exe"也可以理解为一个进程. 线程:进程中独立运行的子任务就是一个线程.像qq.exe运行的时候有很多子任务比如聊天线程.好友视频线程.下载文件线程等等. 使用多线程的优势: 1.发挥多处理器的强大能力 2.在单处理器系统上获得更高的吞吐率 3.建模的简单性 4.异步事件的简化处理 创建线程的方式: 1.继承Thread,重写父类中的run()方法 1 public class M

CPython解释器的进程和线程概述

必备的理论基础: #一 操作系统的作用: 1:隐藏丑陋复杂的硬件接口,提供良好的抽象接口 2:管理.调度进程,并且将多个进程对硬件的竞争变得有序 #二 多道技术: 1.产生背景:针对单核,实现并发 ps: 现在的主机一般是多核,那么每个核都会利用多道技术 有4个cpu,运行于cpu1的某个程序遇到io阻塞,会等到io结束再重新调度,会被调度到4个 cpu中的任意一个,具体由操作系统调度算法决定. 2.空间上的复用:如内存中同时有多道程序 3.时间上的复用:复用一个cpu的时间片 强调:遇到io切

java中进程与线程--三种实现方式

一:进程与线程 概述:几乎任何的操作系统都支持运行多个任务,通常一个任务就是一个程序,而一个程序就是一个进程.当一个进程运行时,内部可能包括多个顺序执行流,每个顺序执行流就是一个线程. 进程:进程是指处于运行过程中的程序,并且具有一定的独立功能.进程是系统进行资源分配和调度的一个单位.当程序进入内存运行时,即为进程. 进程的三个特点: 1:独立性:进程是系统中独立存在的实体,它可以独立拥有资源,每一个进程都有自己独立的地址空间,没有进程本身的运行,用户进程不可以直接访问其他进程的地址空间. 2:

Java中的进程和线程

 Java中的进程与线程 一:进程与线程 概述:几乎任何的操作系统都支持运行多个任务,通常一个任务就是一个程序,而一个程序就是一个进程.当一个进程运行时,内部可能包括多个顺序执行流,每个顺序执行流就是一个线程. 进程:进程是指处于运行过程中的程序,并且具有一定的独立功能.进程是系统进行资源分配和调度的一个单位.当程序进入内存运行时,即为进程. 进程的三个特点: 1:独立性:进程是系统中独立存在的实体,它可以独立拥有资源,每一个进程都有自己独立的地址空间,没有进程本身的运行,用户进程不可以直接访问

C#之线程基础概述

1.概述: 每个正在操作系统上运行的应用程序都是一个进程,一个进程可以包括一个或多个进程.线程是操作系统分配处理器时间的基本单元. 在进程中可以有多个线程同时执行代码,每个线程都维护异常处理程序.调度优先级和一组系统用于在调度该线程前保存线程上下文的结构. 线程上下文包括为使线程在线程的宿主进程地址空间中无缝地执行所需的所有信息,包括线程的CPU寄存器组和堆栈. 线程是进程中的执行流程,一个进程中可以同时包括多个线程,每个线程也可以得到一小段程序的执行时间,这样一个进程就可以具有多个并发执行的线