文档章节

多线程之方法分配

如比如比
 如比如比
发布于 2015/06/09 18:40
字数 288
阅读 120
收藏 3

import java.lang.reflect.Method;


public class Obj {

int obj_i = 11;

Integer obj_int = new Integer(obj_i);

    public void println(String str,boolean b){

    int fun_i = 99;

    Integer fun_int = new Integer(fun_i);

        try {

            System.out.println(str + "start");

            fun_i --;

            obj_i ++;

            if(b){

                Thread.sleep(2000);

                fun_i --;

                obj_i ++;

            }

            System.out.println(str + "end");

            System.out.println(str + "对象>" + this + ">" + System.identityHashCode(this));

            System.out.println(str + "对象>" + obj_i + ">" + System.identityHashCode(obj_i));

            System.out.println(str + "对象>" + obj_int + ">" + System.identityHashCode(obj_int));

            System.out.println(str + "方法>" + fun_i + ">" + System.identityHashCode(fun_i));

            System.out.println(str + "方法>" + fun_int + ">" + System.identityHashCode(fun_int));

            Method[] mds = this.getClass().getMethods();

            for (Method md : mds) {

            if ("println".equals(md.getName())) {

            System.out.println(str + "方法>" + md + ">" + System.identityHashCode(md));

            }

            }

        } catch (InterruptedException e) {

            e.printStackTrace();

        }

    }

}

public class Test {


public static void main(String[] args) {

        final Obj obj = new Obj();

        Thread t3 = new Thread(new Runnable() {


            @Override

            public void run() {

                obj.println("c", true);


            }

        });

        Thread t4 = new Thread(new Runnable() {


            @Override

            public void run() {

            int i = 0;

//                for(int i = 0; i < 20; i++){

                    obj.println("d" + i, false);

//                }


            }

        });

        t3.start();

        t4.start();

        obj.println("main", false);

    }

}

结果

--------------------

mainstart

mainend

main对象>javay.test.Obj@759ebb3d>1973336893

main对象>12>1212899836

main对象>11>1174290147

main方法>98>1289696681

main方法>99>1285044316

main方法>public void javay.test.Obj.println(java.lang.String,boolean)>1607460018

cstart

d0start

d0end

d0对象>javay.test.Obj@759ebb3d>1973336893

d0对象>14>651376380

d0对象>11>1174290147

d0方法>98>1289696681

d0方法>99>672455766

d0方法>public void javay.test.Obj.println(java.lang.String,boolean)>741039500

cend

c对象>javay.test.Obj@759ebb3d>1973336893

c对象>15>1413515514

c对象>11>1174290147

c方法>97>1518828546

c方法>99>1589175178

c方法>public void javay.test.Obj.println(java.lang.String,boolean)>465204793


© 著作权归作者所有

共有 人打赏支持
如比如比
粉丝 124
博文 178
码字总数 286951
作品 0
日本
程序员
JVM内存区域与多线程

Java并发的机制的背后是Java虚拟机(JVM)的工作机制,本文从几个关于并发和多线程的疑问开始,引出Java内存区域的介绍,希望能帮助大家更好的理解Java并发机制。 1. 线程创建和切换的代价—...

登高且赋
2017/12/08
0
0
java虚拟机运行时的内存分类以及出现异常分析(jvm之一)

java虚拟机所管理的内存包括以下几个运行时数据区域: 方法区(Method Area):线程共享的,存放已被虚拟机记载的类信息、常量、静态变量等数据。“永久代(Permanent Generation)” 虚拟机...

zhengDavid
2012/06/13
0
0
linux多线程网页截图-python

上一篇中(linux多线程网页截图-shell),使用shell多进程对大量的网站截图,大大减少了截图的时间。但慢慢的也发现了这种方式的弊端:每个进程分配的网站数量是相等的,有些进程截图较快,有...

cszer
2013/06/14
0
1
Android设计模式探讨 单例模式

核心原则:将构造函数私有化,通过一个静态内部方法来获取唯一实例. 单例模式的定义:确保某个类只有一个实例,避免产生多个对象来消耗过度资源。 下面介绍几种常见实现单例模式的方法。 饿汉...

wongstar
2017/12/14
0
0
C++程序如何精确查找内存泄漏

一、前言 在Linux平台上有valgrind可以非常方便的帮助我们定位内存泄漏,因为Linux在开发领域的使用场景大多是跑服务器,再加上它的开源属性,相对而言,处理问题容易形成“统一”的标准。而...

ajie0112
2015/03/06
0
0

没有更多内容

加载失败,请刷新页面

加载更多

arts-week10

Algorithm 905. Sort Array By Parity - LeetCode Review Who’s Afraid of the Big Bad Preloader? 一文读懂前端缓存 一个网络请求3个步骤:请求,处理,响应,而前端缓存主要在请求处响应这两步...

yysue
48分钟前
0
0
00.编译OpenJDK-8u40的整个过程

前言 历经2天的折腾总算把OpenJDK给编译成功了,要说为啥搞这个,还得从面试说起,最近出去面试经常被问到JVM的相关东西,总感觉自己以前学的太浅薄,所以回来就打算深入学习,目标把《深入理...

凌晨一点
今天
4
0
python: 一些关于元组的碎碎念

初始化元组的时候,尤其是元组里面只有一个元素的时候,会出现一些很蛋疼的情况: def checkContentAndType(obj): print(obj) print(type(obj))if __name__=="__main__": tu...

Oh_really
昨天
6
2
jvm crash分析工具

介绍一款非常好用的jvm crash分析工具,当jvm挂掉时,会产生hs_err_pid.log。里面记录了jvm当时的运行状态以及错误信息,但是内容量比较庞大,不好分析。所以我们要借助工具来帮我们。 Cras...

xpbob
昨天
126
0
Qt编写自定义控件属性设计器

以前做.NET开发中,.NET直接就集成了属性设计器,VS不愧是宇宙第一IDE,你能够想到的都给你封装好了,用起来不要太爽!因为项目需要自从全面转Qt开发已经6年有余,在工业控制领域,有一些应用...

飞扬青云
昨天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部