当前位置: 首页 > 编程笔记 >

Java并发程序入门介绍

卫飞鹏
2023-03-14
本文向大家介绍Java并发程序入门介绍,包括了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();
  }
}
 类似资料:
  • 以下是一个示例XML文档,其中包含各种书籍的记录。 文件:books.xml 的文件内容如下 - 以下是一个示例Xquery文档,其中包含要在上述XML文档上执行的查询表达式。 目的是获取价格大于的那些XML节点元素。 文件:books.xqy 的内容如下 - 文件:XQueryTester.java 的内容如下 - 执行上面示例代码(XQueryTester.java),得到以下结果 - 要验证

  • 主要内容:GWT创建项目,GWT修改模块描述符,GWT修改CSS样式表,GWT修改主页文件,GWT修改人口点,GWT运行应用程序由于 GWT 的强大之处在于Write in Java, Run in JavaScript,我们将使用 Java IDE Eclipse 来演示我们的示例。 让我们从一个简单的HelloWorld应用程序开始 GWT创建项目 项目结构如下: 以下是所有重要文件夹的简要说明: 文件夹 描述 src 源代码(java 类)文件。 包含负责客户端 UI 显示的客户端特定 j

  • 在本章中,我们将学习如何编写使用SLF4J的简单基本记录器程序。按照下面描述的步骤编写一个简单的记录器。 第1步 - 创建slf4j.Logger接口的对象 由于slf4j.Logger是SLF4J API的入口点,首先,需要获取/创建其对象。 类的方法接受表示名称的字符串值,并返回具有指定名称的对象。 第2步 - 记录所需的消息 接口的方法接受表示所需消息的字符串值,并将其记录在信息级别。 以下

  • 在进入学习Google Gson库的细节之前,让我们先来看看一个使用Gson的应用程序的实际应用。 在这个例子中,创建了一个类。 将创建一个带有学生详细信息的JSON字符串,并将其反序列化为学生对象,然后将其序列化为JSON字符串。 示例 打开Eclipse,创建一个Java应用程序项目。然后创建一个Java文件:GsonFirstApp.java - 执行上面示例代码,得到以下结果 - 要记住的

  • 主要内容:1 下载Jackson包,2 Jackson入门程序1 下载Jackson包 要使用Jackson库,先下载Jackson包并导入到项目中 下载jackson-2.8.9 2 Jackson入门程序 2.1 编写核心类 MainApp: 2.2 运行测试

  • 主要内容:JOGL 入门程序 示例我们已经学会了如何在 JOGL 中绘制简单的线条。通过改变这样的线的坐标,我们也可以写出字母单词。 JOGL 入门程序 示例 在本例中,我们将绘制 Hello World(即 HW)的第一个字符。 输出结果如下:

  • 本文向大家介绍MyBatis入门程序,包括了MyBatis入门程序的使用技巧和注意事项,需要的朋友参考一下 什么是mybatis MyBatis是支持普通SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。MyBatis使用简单的XML或注解用于配置和原始映射,将接口和Java的POJOs(Plan Old Java Obje

  • 本文向大家介绍Python Tkinter GUI编程入门介绍,包括了Python Tkinter GUI编程入门介绍的使用技巧和注意事项,需要的朋友参考一下 一、Tkinter介绍 Tkinter是一个python模块,是一个调用Tcl/Tk的接口,它是一个跨平台的脚本图形界面接口。Tkinter不是唯一的python图形编程接口,但是是其中比较流行的一个。最大的特点是跨平台,缺点是性能不太好,