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

    ---
    可以转载, 但必须以超链接形式标明文章原始出处和作者信息及版权声明
  • 相关阅读:
    mvc edmx 的config文件
    Openwrt安装软件的方法
    如何用JQuery实现单元格 循环变背景色
    Vue的生命周期
    hmtl弹出框样式
    在星巴克买咖啡思考技术团队的管理
    RealTimePerformanceDemoView
    《SAAS创业指南》拆书笔记——产品打磨和商业模式初步验证
    基于日志的回放对比系统设计
    异常测试-中间件故障演练
  • 原文地址:https://www.cnblogs.com/null00/p/2065089.html
Copyright © 2020-2023  润新知