线程

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

例如:在你电脑上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方法,线程在内存中变成垃圾

 

posted @ 2017-05-17 16:31  雪儿蛇王  阅读(177)  评论(0编辑  收藏  举报