相关疑难解决方法(0)

你在Java中使用volatile关键字吗?

在今天的工作中,我遇到了volatileJava中的关键字.我不太熟悉它,我发现了这个解释:

Java理论与实践:管理波动性

鉴于该文章解释了相关关键字的详细信息,您是否使用过它,或者您是否曾经看到过以正确方式使用此关键字的情况?

java multithreading volatile keyword

628
推荐指数
13
解决办法
24万
查看次数

我怎么能杀死一个线程?不使用stop();

Thread currentThread=Thread.currentThread();
        public void run()
        {               

             while(!shutdown)
            {                               
                try
                {
                    System.out.println(currentThread.isAlive());
                Thread.interrupted();

                System.out.println(currentThread.isAlive());
                if(currentThread.isAlive()==false)
                {
                    shutdown=true;
                }
                }
                catch(Exception e)
                {
                    currentThread.interrupt();
                }                   
            }
        }

    });
    thread.start();
Run Code Online (Sandbox Code Playgroud)

java multithreading interrupted-exception interruption

24
推荐指数
3
解决办法
8万
查看次数

Java,如何阻止线程

所以我创建了一个线程

Thread personThread = new Thread(Person);
personThread.start();

/** Now to stop it **/
personThread.stop();
Run Code Online (Sandbox Code Playgroud)

问题是,当我尝试编译时,我得到:warning: [deprecation] stop() in Thread has been deprecated.据我所知,这已经不再使用了.那我怎么能完全停止一个线程,与它的状态无关呢?

java multithreading

4
推荐指数
1
解决办法
1万
查看次数

如何在Java中安全地停止和恢复线程?

我有运行的线程,我想停止,稍后在恢复.我学会了不使用stop()等,因为这些已被弃用,并且下面的代码似乎成功停止了线程.它只是退出运行方法.现在,我该如何重新启动它?如果我调用start()方法,它说该线程仍在运行,那么在这种情况下会直接调用run()吗?会不会引起任何问题?BTW这适用于Android应用程序,如果这有任何区别.

private volatile stopThread;

public void stopButton() {
    // this is called when button is clicked
    // and thread is already started and running
    stopThread= true;
}

public void run() {

    while (!stopThread) {
        // do something here
    }

    stopThread=false;
}
Run Code Online (Sandbox Code Playgroud)

编辑:它是一个在线程启动时启动的计时器,然后可以暂停并重新启动.所以timer是一个包含Thread对象的类(我已经使用SurfaceView扩展了类).

java multithreading thread-safety

1
推荐指数
1
解决办法
9587
查看次数

我正在寻找优雅地停止java线程并发现,但我不知道如何检查这种情况的例子

这是停止线程的好例子. 如何优雅地停止java线程? - 感谢同性恋者:)但是当我尝试检查这个例子时,我收到了无限循环.你能帮助我吗?这是我的代码

public class Num{

public void crash(ManualStopping t1) {
    t1.stopMe();
}

public static void main(String [] args) {

    Num num = new Num();
    ManualStopping t1 = new ManualStopping();
    t1.run();
    System.out.println("Main thread");
    num.crash(t1);
}
Run Code Online (Sandbox Code Playgroud)

}

class ManualStopping extends Thread{

volatile boolean finished = false;
public void stopMe(){
    finished = true;
}
public void run() {
    while(!finished){
        System.out.println("I'm alive");
    }
}
Run Code Online (Sandbox Code Playgroud)

}

java thread-safety

0
推荐指数
1
解决办法
422
查看次数