多线程之方法分配

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对象>[email protected]>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对象>[email protected]>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对象>[email protected]>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

时间: 2024-08-05 12:37:32

多线程之方法分配的相关文章

网络与多线程---OC中多线程使用方法(一)

小编在此之前,通过一个小例子,简单的形容了一下进程与线程之间的关系,现在网络编程中的多线程说一下!!! *进程的基本概念 每一个进程都是一个应用程序,都有自己独立的内存空间,一般来说一个应用程序存在一个进程,但也有多个进程的情况:   同一个进程中的线程共享内存中内存和资源. *线程的基本概念 每一个程序都有一个主线程,程序启动时创建(调用main来启动).主线程的生命周期是和应用程序绑定的,程序退出(结束)时,主线程也就停止了.多线程技术表示,一个应用程序都多个线程,使用多线程能提供CPU的使

iOS中有3种常见的多线程编程方法

1.NSThread 这种方法需要管理线程的生命周期.同步.加锁问题,会导致一定的性能开销 2.NSOperation和NSOperationQueue 是基于OC实现的.NSOperation以面向对象的方式封装了需要执行的操作,然后可以将这个操作放到一个NSOperationQueue中去异步执行.不必关心线程管理.同步等问题. 3.Grand Centeral Dispatch 简称GCD,iOS4才开始支持,是纯C语言的API.自iPad2开始,苹果设备开始有了双核CPU,为了充分利用这

PHP+shell实现多线程的方法

PHP+shell实现多线程的方法 这里介绍怎样借助shell脚本实现多线程. 先写个简单的php代码.这里为了让脚本运行时间更长.方便看效果,sleep一下.呵呵.先看下test.php的代码:ls PHP代码: ? 1 2 3 4 5 6 <?php for ($i=0;$i<10;$i++) {   echo $i;   sleep(10); } ?> 在看下shell脚本的代码,很easy ? 1 2 3 4 5 #!/bin/bash for i in 1 2 3 4 5 6

多线程的方法和类别

获取名字 * 通过getName()方法获取线程对象的名字 new Thread("xxx") { public void run() { for(int i = 0; i < 1000; i++) { System.out.println(this.getName() + "....aaaaaaaaaaaaaaaaaaaaaaa"); } } }.start(); new Thread("yyy") { public void run()

java多线程创建方法

1.继承Thread类 2.实现Runnable接口 3.两种实现方法之间的关系 4.实例 sleep是属于Thread类的静态函数. /** * aThread.java * @author cjc */ public class aThread extends Thread { public void run() { for(int i=0;i<10;i++) { System.out.println("The son thread1 is running..."); try

Java并发编程(一) 两种实现多线程的方法(Thread,Runnable)

Java中实现多线程的方法有两种: 继承Thread类和实现Runnable方法,并重写Run方法,然后调用start()方法启动线程.使用Runnable会比Thread要好很多,主要是以下三个原因: (1)Java语言是单继承的,如果继承了Thread类,那么便无法继承其他类. (2)适合多个相同程序代码的线程区处理同一资源的情况. 测试(Thread类) package com.csdhsm.concurrent; /** * @Title: ThreadDemo.java * @Pack

C# 多线程限制方法调用(monitor)

多线程执行方法 改方法没有执行完时 别的方法不能调用次方法.用循环执行一个方法可以需要一分钟 在这一分钟只内任何 成员都不能再调用该方法. class MonitorSample { private int n = 1; //生产者和消费者共同处理的数据 private int max = 10000; private object monitor = new object(); public void Produce() { lock (monitor) { for (; n <= max;

多线程教程初级教程(一)--创建多线程的方法

1-1:进程和线程的区别是什么? 总结:进程是所有线程的集合,每一个线程是进程中的一条执行路径. 1-2:利用多线程有什么好处 1.提高程序的执行效率,防止阻塞 2.充分利用多核CPU的性能 3.利用多线程可以达到任务以大化小的目的 2-1:利用继承Thread类实现多线程 class CreateThread extends Thread { // run方法中编写 多线程需要执行的代码 publicvoid run() { for (inti = 0; i< 10; i++) { Syste

Python多线程实现方法有几种

目前python多线程实现方式有很多种比如:thread,threading,multithreading ,其中thread模块比较底层,而threading模块是对thread做了一些包装,可以更加方便的被使用. 2.7 版本之前python对线程的支持还不够完善,不能利用多核CPU,但是2.7版本的python中已经考虑改进这点,出现了 multithreading模块.threading模块里面主要是对一些线程的操作对象化,创建Thread的class.一般来说,使用线程有两种 模式: