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();
}
}