Java并发(三)

前两篇介绍了一些Java并发的基础知识,博主正巧遇到一种需求:查询数据库,根据查询结果集修改数据库记录,但整个流程是做成了一个schedule的,并且查询比较耗时,每两分钟执行一次,故需要在此基础上考虑性能消耗,sql优化可以提高一些系统效率,同样,多线程也可以...

下面博主做个DEMO引出一些Java并发的实际应用场景:

import java.util.ArrayList;
import java.util.List;

public class TestThread implements Runnable{

    private String name;

    private Integer i = 0;

    List list = new ArrayList();

    public TestThread(String name) {
        this.name=name;
        for(int i=0; i<100; i++){
            list.add(i);
        }
    }

    @Override
    public void run() {
        Long past = System.currentTimeMillis();
        getAndSet();
        System.out.println(System.currentTimeMillis()-past);
    }
    private void getAndSet(){

        while(true){
            synchronized (i){
                if(i>=100){
                    break;
                }
                System.out.println(list.get(i++));
            }
            try{
                Thread.sleep(200);
            }catch(Exception e){
                e.printStackTrace();
            }
        }

    }

    public static void main(String[] args) {
        TestThread a = new TestThread("A");
        new Thread(a).start();
        /*new Thread(a).start();
        new Thread(a).start();
        new Thread(a).start();*/
    }
}

通过以上代码(可以跑)感受得到单线程和四线程的差距,设备越好,cpu核数越多,应该结果越明显,我们平常应该使用线程池来管理线程,因为比较方便..

多线程使用的主要目的在于:

1、吞吐量:你做WEB,容器帮你做了多线程,但是他只能帮你做请求层面的。简单的说,可能就是一个请求一个线程。或多个请求一个线程。如果是单线程,那同时只能处理一个用户的请求。

2、伸缩性:也就是说,你可以通过增加CPU核数来提升性能。如果是单线程,那程序执行到死也就利用了单核,肯定没办法通过增加CPU核数来提升性能。

猜你喜欢

转载自www.cnblogs.com/Joey44/p/10062767.html