zoukankan      html  css  js  c++  java
  • java简单多线程应用举例

    package com.swust.deamon;
    /**
    * 简单的多线程应用
    * @author Administrator
    *
    */
    public class ThreadDemo extends Thread {

    // 重写run方法
    @Override
    public void run(){
    for (int i=0;i<5;i++){
    computer();
    }
    }
    //main方法产生的两个线程和初始解释器线程加在一起三个一起执行
    public static void main(String[] args){
    //创建线程
    ThreadDemo firstThread = new ThreadDemo();
    //ThreadDemo secondThread = new ThreadDemo();
    Thread secondThread = new Thread(new Runnable() {

    @Override
    public void run() {
    // TODO Auto-generated method stub
    for (int i =0;i<5;i++){
    computer();
    }
    }
    });
    //设置这两个线程的属性
    if(args.length >= 1){
    //setPriority是设定线程的优先级
    firstThread.setPriority(Integer.parseInt(args[0]));
    }
    if(args.length >= 2){
    secondThread.setPriority(Integer.parseInt(args[1]));
    }
    //启动线程
    firstThread.start();
    secondThread.start();
    // 设定main函数内部线程
    for(int i=0;i<5;i++){
    computer();
    }
    }
    /*
    * set方法将每个线程中的副本的值设定为指定的值
    * get方法可以获取每个线程中的副本的值
    * */
    static ThreadLocal numcalls = new ThreadLocal<>();//用于记录每个线程调用computer方法的次数
    /*
    * sychronized 关键字 代表这个方法加锁 相当于不管是哪一个线程运行到这个方法时都要检查有没有其他线程
    * 正在使用这个方法,如果有的话需要等待当前线程执行完后再调用该方法。
    * */
    static synchronized void computer(){
    // 计算当前线程被调用的次数
    Integer n = (Integer) numcalls.get();
    if(n==null){
    n = new Integer(1);
    }else
    n = new Integer(n.intValue()+1);
    numcalls.set(n);
    //显示线程的名称及其调用次数
    System.out.println(Thread.currentThread().getName()+": "+n);
    // 模拟线程所产生的最大计算量
    for(int i=0,j=0;i<100000;i++){
    j+=i;
    try {
    //线程休眠
    Thread.sleep((int)Math.random()*100+1);
    } catch (InterruptedException e) {
    // TODO: handle exception
    }
    }
    Thread.yield();//当前线程暂停并允许其他线程执行,因此不会有饥饿线程
    }
    }

  • 相关阅读:
    springMVC+ajax分页查询
    SSM ( Spring 、 SpringMVC 和 Mybatis )配置详解
    Spring整合Hibernate详细步骤
    Spring AOP 注解和xml实现 --转载
    spring笔记--使用springAPI以及自定义类 实现AOP的一个例子
    SSH框架总结(框架分析+环境搭建+实例源码下载) 《转》
    对Spring的IoC和DI最生动的解释
    [转载]jQuery.extend 函数详解
    [转载]Request、Request.Form和Request.QueryString的区别
    [转载]用纯css改变下拉列表select框的默认样式
  • 原文地址:https://www.cnblogs.com/walxt/p/12174827.html
Copyright © 2011-2022 走看看