zoukankan      html  css  js  c++  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();
    }
    }

    ---
    可以转载, 但必须以超链接形式标明文章原始出处和作者信息及版权声明
  • 相关阅读:
    如何学习go源码
    最近打仁王2
    如何在时间复杂度为O(n)空间复杂度为O(1)的情况下完成链表的逆置
    漏洞复现-shellshock-bash破壳
    漏洞复现-aria2-任意文件写入
    漏洞复现-apereo-cas-4.1-rce
    漏洞复现-cgi-httpoxy
    漏洞复现-weblogic_weak_password-getshell
    sqlserver2008安装教程
    mysql内一些可以延时注入的查询语句
  • 原文地址:https://www.cnblogs.com/null00/p/2065089.html
Copyright © 2011-2022 走看看