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

    ---
    可以转载, 但必须以超链接形式标明文章原始出处和作者信息及版权声明
  • 相关阅读:
    字符串语法
    组合数
    并查集
    Java Collection HashMap源码分析
    Java 虚拟机 ClassLoader
    Java 多线程 Future
    Java 虚拟机 GC机制
    Java 基础 原生类型
    Java 多线程 死锁deadlock产生原因+避免方法
    Java 基础 基本类型vs引用类型,传值vs传引用
  • 原文地址:https://www.cnblogs.com/null00/p/2065089.html
Copyright © 2011-2022 走看看