是否有可能在每次创建新线程时告诉JVM(或某个适当的对象)执行给定的代码块?为每个新线程执行代码?
2
A
回答
3
这取决于你的使用情况,但你也可以做Java字节code instrumentation。然而,这通常用于测量,错误跟踪,分析等,因为它具有明显的性能影响。
这可以用ASM做了,他们有一个tutorial上手还是先看看在引导Add Logging at Class Load Time with Java Instrumentation,他们解释如何修改Java代码的方式,每次输入一个方法时,该代码被添加和退出。
在你的情况下,你只会对特殊方法,Thread()
构造函数或调用Thread.start()
。
6
不,不使用标准Java。
看看面向方面的编程,如AspectJ。您应该可以为Thread构造函数创建一个切点。
4
并非每次创建新线程。但是,如果使用ThreadPoolExecutor创建新线程,则可以指定一个ThreadFactory,该线程工厂可以在每次创建线程时运行特定的代码块。该工厂。一个简单的例子(其中的代码运行块打印线程的名称)看起来像:
public static void main(String[] args) {
ExecutorService executor = Executors.newCachedThreadPool(new ThreadFactory() {
@Override
public Thread newThread(Runnable r) {
Thread t = new Thread(r);
System.out.println("New thread created: " + t); //Your block of code
return t;
}
});
Runnable r = new Runnable() {
@Override
public void run() {
try {
Thread.sleep(150);
} catch (InterruptedException ex) {
Logger.getLogger(Test.class.getName()).log(Level.SEVERE, null, ex);
}
}
};
for (int i = 0; i < 5; i++) {
executor.submit(r);
}
executor.shutdown();
}
相关问题
- 1. Ruby:为每个子类执行代码
- 2. JQuery - 为每个新实例化的DOM对象执行代码
- 3. 线程未被执行后的代码
- 4. 多线程代码 - 力执行顺序
- 5. 执行Javascript代码在后台线程
- 6. 执行代码每x秒
- 7. Grails的执行代码每个环境
- 8. 对每个请求执行代码
- 9. 在每个请求上执行代码
- 10. 代码(java,多线程)在一行代码后停止执行
- 11. scala在线代码执行
- 12. Java,多个线程,每次只执行一个线程
- 13. 在每个Wordpress的新帖子后执行php代码
- 14. C++ boost ::线程在主线程上执行代码?
- 15. 为什么GIL不允许执行线程代码?
- 16. 线程早期执行后的代码,为什么?
- 17. 更新后执行代码
- 18. 为什么这个代码添加每次执行
- 19. 为批处理中的每个元素执行一些代码
- 20. IIS - 为每个请求执行脚本/代码片段
- 21. Rails ActionController为每个动作执行相同的代码
- 22. 为ASP.NET的每个请求(aspx和cshtml)执行一些代码
- 23. 如何在每个块的线程数多于每个线程的线程上执行并行扫描?
- 24. 在一个线程中执行阻止代码
- 25. vb.net停止的代码,直到一个线程执行finshed
- 26. 如何识别由多个线程执行的代码段
- 27. 从另一个线程执行ruby的主线程上的代码?
- 28. symfony 2全球路线在每一页上执行代码
- 29. CUDA流每个线程和库行为
- 30. 代码执行流程
创建或开始? – aioobe 2012-07-25 08:31:51
这是创建线程时的正常行为。对不起,但不能抵抗.. –
2012-07-25 08:36:22
你可以修改Thread类,但只有在没有其他选项的情况下。 – 2012-07-25 09:23:30