java 如使让一个方法只能调用一次 除非这个方法运行结束

java 如使让一个方法只能调用一次 除非这个方法运行结束


public class StockInfo extends Thread{

public void StockInfo(){
new StockInfo().start();
//如果让这个调用 只能一次(只有一个线程 可以使用)
}

public void run(){"死循环"}
}
public Synchronize void run(){"死循环"} 加上 貌似无效

使用Synchronized或者ReetrantLock
也可以在方法内添加标识 在方法开始执行时改变标识状态 方法结束后也改变标识状态 只要当标识符合条件时才执行方法体内容 比如:
int status = true;
public String getSomeThing(){
var ret = "";

if(status ){
status = false;
........................

status = true;

return "someThing";

}

return ret;
}
这个方法虽然没像你说的只能调用一次 但是你方法体的内容被控制住了 也可以变相的达到要的效果
不过还是推荐使用同步锁~~
温馨提示:内容为网友见解,仅供参考
第1个回答  2016-06-29
线程同步,synchronized关键字本回答被提问者采纳
第2个回答  2016-06-29
在方法前加synchronized追问

public Synchronized void run(){"死循环"}

没作用 还是运行两次

java 如使让一个方法只能调用一次 除非这个方法运行结束
使用Synchronized或者ReetrantLock 也可以在方法内添加标识 在方法开始执行时改变标识状态 方法结束后也改变标识状态 只要当标识符合条件时才执行方法体内容 比如:int status = true;public String getSomeThing(){ var ret = "";if(status ){ status = false;...status = true;return "someT...

JVM详解基础篇之执行引擎(玩转Java,游刃有余)
比如Python、Rust、JavaScript等,但对于编译型语言,如C\/C++、Go等语言来说,执行的性能肯定是差一筹的,而前面不止一次提到过:Java为了解决性能问题,所以采用了一种叫做JIT即时编译的技术,也就是直接将执行比较频繁的整个方法或代码块直接编译成本地机器码,然后以后执行这些方法或代码时,直接执行生成的机器码即可。

java 如何方法限定一个线程使用?
你可以通过synchronized关键字来限制一个方法只能在一个线程执行。你可以将该方法用synchronized关键字修饰,这样当一个线程在执行这个方法时,其他线程将会被阻塞,直到该线程执行完成,其他线程才能继续执行该方法。例如:public synchronized void myMethod(){ \/\/方法执行的代码 } 这里我们使用synchronized关键...

Java线程通信之wait\/notify机制
一个线程调用 Object 的 wait() 方法,使其线程被阻塞;另一线程调用 Object 的 notify()\/notifyAll() 方法,wait() 阻塞的线程继续执行。实现 wait\/notify 机制的条件 由于 wait\/notify 方法是定义在java.lang.Object中,所以在任何 Java 对象上都可以使用。wait 方法 在执行 wait() 方法前,当前...

Java如何停止线程
1. 使用退出标志终止线程 当run方法执行完后,线程就会退出。但有时run方法是永远不会结束的。如在服务端程序中使用线程进行监听客户端请求,或是其他的需要循环处理的任务。在这种情况下,一般是将这些任务放在一个循环中,如while循环。如果想让循环永远运行下去,可以使用while(true){……}来处理。...

java初级面试题目?
回答:是,因为java方法中传递的是引用,就ok。如果回答中,将引用说明了自己的理解,加分。 面向对象基础类 1.重载和重写的区别? 回答:这个看个人理解,理解没有什么大的偏差就ok;回答出多态相关的,加分。 2.构造方法能不能重载? 回答:可以重载,ok;回答构造方法时不能继承的,所以如果要调用指定父类构造器就必须重...

java多线程问题 跳过run方法里面的if执行?
start方法来启动一个线程,真正实现了多线程运行。这时无需等待run方法体代码执行完毕,可以直接继续执行下面的代码;这时此线程是处于就绪状态, 并没有运行。然后通过此Thread类调用方法run来完成其运行状态, 这里方法run称为线程体,它包含了要执行的这个线程的内容, Run方法运行结束, 此线程终止。然后...

JAVA 的线程这块咋整啊,咋也学不明白啊~~
利用Java语言实现多线程应用程序的方法很简单。根据多线程应用程序继承或实现对象的不同可以采用两种方式:一种是应用程序的并发运行对象直接继承Java的线程类Thread;另外一种方式是定义并发执行对象实现Runnable接口。 继承Thread类的多线程程序设计方法 Thread 类是JDK中定义的用于控制线程对象的类,在该类中封装了用于...

java 中的 方法 总是调来调去的 求高人发题 专练习调方法的练习题 下下...
编写main()来调用所有不同版本的方法。3.编写具有两个方法的类,在第一个方法内调用第二个方法两次:第一次调用不使用this,第二次调用时使用this。4.编写具有两个重载构造方法的类,并在第一个构造方法中调用第二个构造方法。5.创建一个带有public,private,protected和包访问权限的成员变量以及成员方法的类。创建...

JAVA 中的关键字static
需要一个数据对象为整个类而非某个对象服务,同时又力求不破坏类的封装性,即要求此成员隐藏在类的内部,对外不可见。 4、static的内部机制: 静态数据成员要在程序一开始运行时就必须存在。因为函数在程序运行中被调用,所以静态数据成员不能在任何函数内分配空间和初始化。 这样,它的空间分配有三个可能的地方,一是作...

相似回答