软件编程
位置:首页>> 软件编程>> java编程>> Java并发程序入门介绍

Java并发程序入门介绍

作者:Microgoogle  发布时间:2022-03-05 12:05:26 

标签:Java,并发程序

今天看了看Java并发程序,写一写入门程序,并设置了线程的优先级。


class Elem implements Runnable{
 public static int id = 0;
 private int cutDown = 5;
 private int priority;

public void setPriority(int priority){
   this.priority = priority;
 }

public int getPriority(){
   return this.priority;
 }
 public void run(){
   Thread.currentThread().setPriority(priority);
   int threadId = id++;
   while(cutDown-- > 0){
     double d = 1.2;
     while(d < 10000)
       d = d + (Math.E + Math.PI)/d;
     System.out.println("#" + threadId + "(" + cutDown + ")");
   }
 }
}
public class Basic {
 public static void main(String args[]){
   for(int i = 0; i < 10; i++){
     Elem e = new Elem();
     if(i == 0 )
       e.setPriority(Thread.MAX_PRIORITY);
     else
       e.setPriority(Thread.MIN_PRIORITY);
     Thread t = new Thread(e);
     t.start();
   }
 }
}

由于机器很强悍,所以先开始并没看到并发的效果,感觉是按顺序执行的,所以在中间加了浮点数的运算来延迟时间。

当然,main函数里面可以用Executors来管理线程。


import java.util.concurrent.*;
class Elem implements Runnable{
 public static int id = 0;
 private int cutDown = 5;
 private int priority;

public void setPriority(int priority){
   this.priority = priority;
 }

public int getPriority(){
   return this.priority;
 }
 public void run(){
   Thread.currentThread().setPriority(priority);
   int threadId = id++;
   while(cutDown-- > 0){
     double d = 1.2;
     while(d < 10000)
       d = d + (Math.E + Math.PI)/d;
     System.out.println("#" + threadId + "(" + cutDown + ")");
   }
 }
}
public class Basic {
 public static void main(String args[]){
//    for(int i = 0; i < 10; i++){
//      Elem e = new Elem();
//      if(i == 0 )
//        e.setPriority(Thread.MAX_PRIORITY);
//      else
//        e.setPriority(Thread.MIN_PRIORITY);
//      Thread t = new Thread(e);
//      t.start();
//    }
   ExecutorService exec = Executors.newCachedThreadPool();
   for(int i = 0; i < 10; i++){
     Elem e = new Elem();
     if(i == 0 )
       e.setPriority(Thread.MAX_PRIORITY);
     else
       e.setPriority(Thread.MIN_PRIORITY);
     exec.execute(e);
   }
   exec.shutdown();
 }
}
0
投稿

猜你喜欢

手机版 软件编程 asp之家 www.aspxhome.com