Java并发程序入门介绍

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

今天看了看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();
 }
}
标签:Java,并发程序
0
投稿

猜你喜欢

  • java 使用DecimalFormat进行数字的格式化实例详解

    2022-04-28 10:55:25
  • 使用springboot整合RateLimiter限流过程

    2022-09-12 21:42:48
  • Springboot整合pagehelper分页功能

    2021-12-14 15:53:48
  • C#泛型方法在lua中表示的一种设计详解

    2022-08-24 20:03:12
  • 使用Spring的拦截器监测每个Controller或方法的执行时长

    2021-12-19 16:36:01
  • Android Vibrator调节震动代码实例

    2022-07-06 04:56:46
  • Java调用第三方http接口的常用方式总结

    2023-11-06 22:47:24
  • Android使用criteria选择合适的地理位置服务实现方法

    2022-09-26 14:24:34
  • Android Mms之:短信发送流程(图文详解)

    2022-07-27 02:10:21
  • Java8中Optional操作的实际应用

    2022-04-30 22:52:31
  • 深入解析Java并发程序中线程的同步与线程锁的使用

    2022-03-19 10:25:38
  • Spring Boot 集成Elasticsearch模块实现简单查询功能

    2022-09-05 06:31:31
  • Spring Boot实现分布式锁的自动释放的示例代码

    2023-10-17 11:06:24
  • 详细了解C# 枚举与位枚举

    2023-02-19 17:36:57
  • Unity Shader实现新手引导遮罩镂空效果

    2022-08-18 16:25:12
  • IDEA(jetbrain通用)使用教程图解

    2023-04-15 04:05:49
  • Java 客户端操作 FastDFS 实现文件上传下载替换删除功能

    2022-06-01 15:01:38
  • 基于C++实现的哈夫曼编码解码操作示例

    2023-10-13 13:02:43
  • SpringMVC拦截器创建配置及执行顺序

    2023-06-06 20:41:16
  • 解决AMD无法使用Android studio问题

    2022-04-13 00:17:32
  • asp之家 软件编程 m.aspxhome.com