[讨论] 如何控制一个方法内,创建线程的个数
beneo
2011-08-12
其实就是
interface Job { void execute(Context context); } 希望能够控制execute内部,不让创建 runnable 或者 callable 的代码,或者 限制 runnable 或者 callable 的个数? 有没有比较好的思路? |
|
richard_2010
2011-08-14
限制execute里面如果创建线程的话必须用同步机制,在用于同步的那个对象里面弄个threadCount指定线程个数
|
|
night_stalker
2011-08-14
lz 可以考虑 semaphore
|
|
beneo
2011-08-14
night_stalker 写道 lz 可以考虑 semaphore
如何考虑semaphore,我一直觉得semaphore就是一把锁而已,在一个方法里面不让使用callable与runnable,与semaphore有什么关系,请指点 我觉得要用代码来约束行为,不希望他们方法体里面写new Thread().start()或者使用ThreadPoolExecutor这些。 google app 不是不让多线程么?怎么实现的? |
|
beneo
2011-08-14
richard_2010 写道 限制execute里面如果创建线程的话必须用同步机制,在用于同步的那个对象里面弄个threadCount指定线程个数
我的意思是不想然程序员自己创建thread,我希望有什么办法 起码能够约束,要不然就是制止以上2种行为 1. 约束。在这个方法里面,就算你使用了再多的线程,不管你如何使用callable与runable,我都有个线程池代替你管理 2. 制止。如果你使用了callable与runable,我会在runtime的时候抛出异常告诉你此方法不能够使用多线程 3. 用一个annotation来标记此方法 这个用于开放平台或者一些业务平台吧 因为比如我们的线程都是一个线程池,但是这个就对程序员有要求了。我希望用代码来约束,而不是用文档 |
|
runfriends
2011-08-14
难道楼主想用程序控制一个方法内的runnable callable数量?超过了数量就禁止运行或阻塞?
如果是这样并且用的是java,建议研究下java认证与授权机制,这个问题太复杂足够写一本书了。java核心技术里面有介绍。这个应该能解决你的问题 |
|
beneo
2011-08-14
runfriends 写道 难道楼主想用程序控制一个方法内的runnable callable数量?超过了数量就禁止运行或阻塞?
如果是这样并且用的是java,建议研究下java认证与授权机制,这个问题太复杂足够写一本书了。java核心技术里面有介绍。这个应该能解决你的问题 你的意思是用一个policy来做权限控制。。。。曾经读过用过,但感觉不能达到我的目的 |
|
runfriends
2011-10-05
可能以用认证与授权机制控制哪此类可用哪些类不可用。把Thread Executor加入黑名单,这样程序员就不能在方法内自己创建线程,然后提供一个类强迫程序员使用你自己定义的线程创建机制,剩下的你想怎么样都行了。
认证与授权机制的使用,我也没用过只是有过简单了解,我也不能提供更详细的解答。不过我相信这个方法能实现你的目的。 |