相关疑难解决方法(0)

Java中的"实现Runnable"与"扩展线程"

从我在Java中使用线程的时间开始,我发现了这两种编写线程的方法:

implements Runnable:

public class MyRunnable implements Runnable {
    public void run() {
        //Code
    }
}
//Started with a "new Thread(new MyRunnable()).start()" call
Run Code Online (Sandbox Code Playgroud)

或者,用extends Thread:

public class MyThread extends Thread {
    public MyThread() {
        super("MyThread");
    }
    public void run() {
        //Code
    }
}
//Started with a "new MyThread().start()" call
Run Code Online (Sandbox Code Playgroud)

这两个代码块有什么显着差异吗?

java multithreading runnable implements java-threads

2023
推荐指数
30
解决办法
67万
查看次数

什么是对象序列化?

"对象序列化"是什么意思?你能用一些例子解释一下吗?

java serialization object-serialization

373
推荐指数
8
解决办法
28万
查看次数

何时使用Comparable和Comparator

我有一个对象列表,我需要在一个字段上排序,比如分数.在没有多想的情况下,我编写了一个实现Comparator的新类,它可以执行任务并且可以正常运行.

现在回过头来看,我想知道我是否应该让我的类实现Comparable,而不是创建一个实现Comparator的新类.分数是对象将被订购的唯一字段.

  1. 我做过什么可以接受的做法?

  2. 是正确的方法"首先让类实现Comparable(对于自然顺序),如果需要替代字段比较,那么创建一个实现Comparator的新类"?

  3. 如果上面的(2)为真,那么它是否意味着只有在具有类实现Comparable之后才应该实现Comparator?(假设我拥有原始课程).

java comparable comparator

106
推荐指数
10
解决办法
11万
查看次数

如何等待多个线程完成?

简单地等待所有线程进程完成的方法是什么?例如,假设我有:

public class DoSomethingInAThread implements Runnable{

    public static void main(String[] args) {
        for (int n=0; n<1000; n++) {
            Thread t = new Thread(new DoSomethingInAThread());
            t.start();
        }
        // wait for all threads' run() methods to complete before continuing
    }

    public void run() {
        // do something here
    }


}
Run Code Online (Sandbox Code Playgroud)

我如何改变这一点,以便main()方法在注释处暂停,直到所有线程的run()方法都退出?谢谢!

java parallel-processing multithreading wait

103
推荐指数
8
解决办法
16万
查看次数

如何在"完全"同时启动两个线程

线程应该以相同的瞬间开始.我明白,如果你这样做thread1.start(),在下次执行之前需要几毫秒thread2.start().

甚至可能还是不可能?

java multithreading

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

等到所有线程完成他们在java中的工作

我正在编写一个包含5个线程的应用程序,它们可以同时从Web获取一些信息,并在缓冲类中填充5个不同的字段.
当所有线程完成工作时,我需要验证缓冲区数据并将其存储在数据库中.
我该怎么做(当所有线程完成工作时收到警报)?

java multithreading wait

80
推荐指数
7
解决办法
13万
查看次数

VisualVM - 线程状态

有人可以解释我的区别Sleeping,Wait,Park,和Monitor线程状态中的VisualVM.

在此输入图像描述

这是我发现的:

Running:线程仍在运行.
Sleeping:thread正在休眠(在线程对象上调用方法yield())
Wait:线程被互斥锁或屏障阻塞,并且正在等待另一个线程释放锁
Park:挂起的线程被暂停,直到它们被给予许可.取消停放线程通常是通过在线程对象上调用方法unpark()来完成的
Monitor:线程正在等待条件变为true以恢复执行

我无法理解的是州立公园,实际上是什么暂停线程?如何在代码中检测到什么使线程暂停执行?

有人可以在这方面指导我.

谢谢.

java jvm visualvm jvisualvm

72
推荐指数
2
解决办法
3万
查看次数

如何在Java中检查线程是否已经启动?

我有一个扩展Thread的类.

我会在某个时候开始这个帖子.

一段时间后,我需要检查该线程是否已经启动?

这样我就可以在那一点开始.

我的线程类是,

public class BasicChatListener extends Thread{

    public void run(){


    }

}
Run Code Online (Sandbox Code Playgroud)

我需要知道一个BasicChatListener类的特定线程是否正在运行?因为我的应用程序中已经有多个线程在运行.

我们的堆栈成员将如何帮助我.

java multithreading

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