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中如何判断null/ undefined/IsNull
    CSS3实现两行或三行文字,然后多出的部分省略号代替
    关于CodeFirst的使用教程
    把一个字符串里符合表情文字标签的地方全部替换为相应的图片的方法
    js 给json添加新的字段,或者添加一组数据,在JS数组指定位置删除、插入、替换元素
    用css3选择器给你要的第几个元素添加不同样式方法【转发】
    WebApi2 知识点总结
    把字符串每隔四个字符使用“-”中横线分隔的方法
    C语言strchr()函数:查找某字符在字符串中首次出现的位置
    linux 下安装开发组件包
  • 原文地址:https://www.cnblogs.com/xueershewang/p/6868215.html
Copyright © 2011-2022 走看看