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();//当前线程暂停并允许其他线程执行,因此不会有饥饿线程
    }
    }

  • 相关阅读:
    Struts类型转换
    Oracle的学习,知识点整理
    常用的Oracle_SQL语句
    Oracle的优化
    Oracle创建表空间,用户,授权
    Linux权限的控制
    Oracle实例的3种连接方式和所使用的连接工具
    Oracle数据库打开端口
    Hibernate一对多配置
    hibernate UUID问题
  • 原文地址:https://www.cnblogs.com/walxt/p/12174827.html
Copyright © 2011-2022 走看看