Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/396.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何防止方法run()?_Java - Fatal编程技术网

Java 如何防止方法run()?

Java 如何防止方法run()?,java,Java,我试图学习线程,但我有一个问题。因为run()方法是public()访问,所以任何可以引用我的类实例的人都可以使用它。所以我想阻止它,有一种方法可以使用匿名内部类但我听说可以使用currentThread并将其与预期线程进行比较。如何实现这一点 假设: class OnlyConcept implements Runnable { OnlyConcept() { new Thread(this).start(); } public void run() { // call met

我试图学习线程,但我有一个问题。因为run()方法是public()访问,所以任何可以引用我的类实例的人都可以使用它。所以我想阻止它,有一种方法可以使用匿名内部类但我听说可以使用currentThread并将其与预期线程进行比较。如何实现这一点

假设:

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()
    允许您访问当前线程。使用它,您可以轻松访问该线程的
    名称
    或其他一些属性,并停止特殊线程的执行。但是,此解决方案比其他解决方案差得多。如果您的代码依赖于线程名称和类似的有趣内容,您可能会