[讨论] 如何控制一个方法内,创建线程的个数

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加入黑名单,这样程序员就不能在方法内自己创建线程,然后提供一个类强迫程序员使用你自己定义的线程创建机制,剩下的你想怎么样都行了。
认证与授权机制的使用,我也没用过只是有过简单了解,我也不能提供更详细的解答。不过我相信这个方法能实现你的目的。
Global site tag (gtag.js) - Google Analytics