Java并发程序入门介绍
今天看了看Java并发程序,写一写入门程序,并设置了线程的优先级。
classElemimplementsRunnable{ publicstaticintid=0; privateintcutDown=5; privateintpriority; publicvoidsetPriority(intpriority){ this.priority=priority; } publicintgetPriority(){ returnthis.priority; } publicvoidrun(){ Thread.currentThread().setPriority(priority); intthreadId=id++; while(cutDown-->0){ doubled=1.2; while(d<10000) d=d+(Math.E+Math.PI)/d; System.out.println("#"+threadId+"("+cutDown+")"); } } } publicclassBasic{ publicstaticvoidmain(Stringargs[]){ for(inti=0;i<10;i++){ Eleme=newElem(); if(i==0) e.setPriority(Thread.MAX_PRIORITY); else e.setPriority(Thread.MIN_PRIORITY); Threadt=newThread(e); t.start(); } } }
由于机器很强悍,所以先开始并没看到并发的效果,感觉是按顺序执行的,所以在中间加了浮点数的运算来延迟时间。
当然,main函数里面可以用Executors来管理线程。
importjava.util.concurrent.*; classElemimplementsRunnable{ publicstaticintid=0; privateintcutDown=5; privateintpriority; publicvoidsetPriority(intpriority){ this.priority=priority; } publicintgetPriority(){ returnthis.priority; } publicvoidrun(){ Thread.currentThread().setPriority(priority); intthreadId=id++; while(cutDown-->0){ doubled=1.2; while(d<10000) d=d+(Math.E+Math.PI)/d; System.out.println("#"+threadId+"("+cutDown+")"); } } } publicclassBasic{ publicstaticvoidmain(Stringargs[]){ //for(inti=0;i<10;i++){ //Eleme=newElem(); //if(i==0) //e.setPriority(Thread.MAX_PRIORITY); //else //e.setPriority(Thread.MIN_PRIORITY); //Threadt=newThread(e); //t.start(); //} ExecutorServiceexec=Executors.newCachedThreadPool(); for(inti=0;i<10;i++){ Eleme=newElem(); if(i==0) e.setPriority(Thread.MAX_PRIORITY); else e.setPriority(Thread.MIN_PRIORITY); exec.execute(e); } exec.shutdown(); } }