zoukankan      html  css  js  c++  java
  • 线程

    先说说进程:进程就是正在运行的程序,进程是系统进行资源分配和调用的独立单位,每个过程都有它自己的内存空间和系统资源

    例如:在你电脑上win7系统,你听着酷狗音乐、聊着qq。那么酷狗和qq在你电脑上就相当于两个进程,他们各自占用着电脑里的内存空间和一定的系统资源

    在说说线程:线程就是程序的执行单元,执行路径,是程序使用cpu的最基本单位,

    在一个进程中可以执行多个任务,每个任务可以看作一个线程。如下图

    线程是程序使用cpu的最小单位,可以这样理解,也就是说一个程序相当于一个进程,这个程序要执行要通过cpu来执行,cpu要把这个程序分割成n个线程来执行

    如果一个程序就一个任务,相当于这个程序进程里就一个线程,这个线程获取cpu的资源后执行然后结束,进程就结束了,这个程序也就结束了

    如果程序有多个任务,相当于程序有多个线程,那他抢到cpu资源的可能性也就变多,那这个程序运行的就快,当这多个线程结束后这个程序也就结束了

    这就是单线程和多线程的区别,其实就是占用cpu使用率的多少

    ======================线程在项目中的使用========================

    public static void thPool2(){
            for(int a=0;a<100;a++){
                 final int i=a;
                  new Thread() {
                    public void run() {
                        System.out.println("线程第"+i+"次输出!");
                        try {
                            Thread.sleep(1000);
                        } catch (InterruptedException e) {
                            e.printStackTrace();
                        }
                    }
                }.start();
            }
        }

    下面如果不加颜色那部分,在控制台上输出是一秒一次,加上,瞬间全部输出到控制台,这就是加线程的好处,充分利用了cpu

    如果项目中在service层有个循环,10000遍,在这个forx循环中每一次都会调用一次数据库,我们就可以在for循环中加入线程,把sql语句写在线程中,可以提高效率

    =====

    如果要使用线程池的话可以看下面链接

    线程池:http://www.cnblogs.com/xueershewang/p/6868869.html

    =========

    线程的几种状态:新建--就绪---运行----阻塞----死亡              
    1:继承类创建了线程,没有调用start,没有开启
    2:调用start()方法开启了线程
    3:获取了cpu的资源,享有执行权
    4:由于某些原因(wait,sleep),失去了执行权
    5:调用run()方法结束,或是调用stop方法,线程在内存中变成垃圾

  • 相关阅读:
    JS判断鼠标从什么方向进入一个容器
    jQuery最核心的基础设施之一——数据缓存模块进化史
    判定模块加载时是否存在循环依赖
    mass Framework fx模块 v4
    一个简单的加载系统
    MVC历史演化
    Mozilla Firefox 17 正式发布
    javascript 堆栈与列队
    被迫才是进步的原动力(转)
    jquery1.83 之前所有与异步列队相关的模块的演变回顾
  • 原文地址:https://www.cnblogs.com/xueershewang/p/6868215.html
Copyright © 2011-2022 走看看