Java 如何防止方法run()?
我试图学习线程,但我有一个问题。因为run()方法是public()访问,所以任何可以引用我的类实例的人都可以使用它。所以我想阻止它,有一种方法可以使用匿名内部类但我听说可以使用currentThread并将其与预期线程进行比较。如何实现这一点 假设:Java 如何防止方法run()?,java,Java,我试图学习线程,但我有一个问题。因为run()方法是public()访问,所以任何可以引用我的类实例的人都可以使用它。所以我想阻止它,有一种方法可以使用匿名内部类但我听说可以使用currentThread并将其与预期线程进行比较。如何实现这一点 假设: class OnlyConcept implements Runnable { OnlyConcept() { new Thread(this).start(); } public void run() { // call met
class OnlyConcept implements Runnable {
OnlyConcept() {
new Thread(this).start();
}
public void run() {
// call methods or do something meaningful
}
}
你必须做两件事:
线程
构造函数来命名线程run
方法的第一行选中Thread.currentThread.getName()
,如果不正确,抛出一些合适的异常,如RuntimeException
这不是100%万无一失的,因为其他人可以将他们的线程命名为与您相同的线程。您必须做两件事:
线程
构造函数来命名线程run
方法的第一行选中Thread.currentThread.getName()
,如果不正确,抛出一些合适的异常,如RuntimeException
这不是100%万无一失的,因为其他人可以将他们的线程命名为与您相同的线程。您必须做两件事:
线程
构造函数来命名线程run
方法的第一行选中Thread.currentThread.getName()
,如果不正确,抛出一些合适的异常,如RuntimeException
这不是100%万无一失的,因为其他人可以将他们的线程命名为与您相同的线程。您必须做两件事:
线程
构造函数来命名线程run
方法的第一行选中Thread.currentThread.getName()
,如果不正确,抛出一些合适的异常,如RuntimeException
这并不是100%万无一失的,因为其他人可以将他们的线程命名为与您相同的线程。有很多方法可以确保您的线程仅由正确的类使用。 更好的解决方案之一是对其他类隐藏实现。例如,您可以将
Runnable
包的构造函数设置为私有,或者将整个内容作为私有类隐藏在您的另一个类中
更糟糕的方法之一是在线程/runnable执行后检查一些内容。
Thread.currentThread()
允许您访问当前线程。这样,您就可以轻松访问该线程的名称
或其他属性,并停止特殊线程的执行。然而,这一解决方案不如其他解决方案。如果您的代码依赖于线程名和类似的有趣的东西,那么您以后可能会遇到问题(例如,如果您希望在两个不同的线程中并行执行代码)
通过使用可见性修饰符限制对代码的访问,将类封装在不同的类中是一种更干净的方法。如果有机会,可以使用这种方法。有很多方法可以确保线程仅由正确的类使用。 更好的解决方案之一是对其他类隐藏实现。例如,您可以将
Runnable
包的构造函数设置为私有,或者将整个内容作为私有类隐藏在您的另一个类中
更糟糕的方法之一是在线程/runnable执行后检查一些内容。
Thread.currentThread()
允许您访问当前线程。使用它,您可以轻松访问该线程的名称
或其他属性,并停止特殊线程的执行。但是,此解决方案比其他解决方案差得多。如果您的代码依赖于线程名称和类似的有趣内容,您可能会遇到问题ater(例如,如果您希望在两个不同的线程中并行执行代码
通过使用可见性修饰符限制对代码的访问,将类封装在不同的类中是一种更干净的方法。如果有机会,可以使用这种方法。有很多方法可以确保线程仅由正确的类使用。 更好的解决方案之一是对其他类隐藏实现。例如,您可以将
Runnable
包的构造函数设置为私有,或者将整个内容作为私有类隐藏在您的另一个类中
更糟糕的方法之一是在线程/runnable执行后检查一些内容。
Thread.currentThread()
允许您访问当前线程。使用它,您可以轻松访问该线程的名称
或其他属性,并停止特殊线程的执行。但是,此解决方案比其他解决方案差得多。如果您的代码依赖于线程名称和类似的有趣内容,您可能会遇到问题ater(例如,如果您希望在两个不同的线程中并行执行代码
通过使用可见性修饰符限制对代码的访问,将类封装在不同的类中是一种更干净的方法。如果有机会,可以使用这种方法。有很多方法可以确保线程仅由正确的类使用。 更好的解决方案之一是对其他类隐藏实现。例如,您可以将
Runnable
包的构造函数设置为私有,或者将整个内容作为私有类隐藏在您的另一个类中
更糟糕的方法之一是在线程/runnable执行后检查一些内容。
Thread.currentThread()
允许您访问当前线程。使用它,您可以轻松访问该线程的名称
或其他一些属性,并停止特殊线程的执行。但是,此解决方案比其他解决方案差得多。如果您的代码依赖于线程名称和类似的有趣内容,您可能会