从我在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)
这两个代码块有什么显着差异吗?
我有一个对象列表,我需要在一个字段上排序,比如分数.在没有多想的情况下,我编写了一个实现Comparator的新类,它可以执行任务并且可以正常运行.
现在回过头来看,我想知道我是否应该让我的类实现Comparable,而不是创建一个实现Comparator的新类.分数是对象将被订购的唯一字段.
我做过什么可以接受的做法?
是正确的方法"首先让类实现Comparable(对于自然顺序),如果需要替代字段比较,那么创建一个实现Comparator的新类"?
如果上面的(2)为真,那么它是否意味着只有在具有类实现Comparable之后才应该实现Comparator?(假设我拥有原始课程).
简单地等待所有线程进程完成的方法是什么?例如,假设我有:
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()方法都退出?谢谢!
线程应该以相同的瞬间开始.我明白,如果你这样做thread1.start(),在下次执行之前需要几毫秒thread2.start().
甚至可能还是不可能?
我正在编写一个包含5个线程的应用程序,它们可以同时从Web获取一些信息,并在缓冲类中填充5个不同的字段.
当所有线程完成工作时,我需要验证缓冲区数据并将其存储在数据库中.
我该怎么做(当所有线程完成工作时收到警报)?
有人可以解释我的区别Sleeping,Wait,Park,和Monitor线程状态中的VisualVM.

这是我发现的:
Running:线程仍在运行.
Sleeping:thread正在休眠(在线程对象上调用方法yield())
Wait:线程被互斥锁或屏障阻塞,并且正在等待另一个线程释放锁
Park:挂起的线程被暂停,直到它们被给予许可.取消停放线程通常是通过在线程对象上调用方法unpark()来完成的
Monitor:线程正在等待条件变为true以恢复执行
我无法理解的是州立公园,实际上是什么暂停线程?如何在代码中检测到什么使线程暂停执行?
有人可以在这方面指导我.
谢谢.
我有一个扩展Thread的类.
我会在某个时候开始这个帖子.
一段时间后,我需要检查该线程是否已经启动?
这样我就可以在那一点开始.
我的线程类是,
public class BasicChatListener extends Thread{
public void run(){
}
}
Run Code Online (Sandbox Code Playgroud)
我需要知道一个BasicChatListener类的特定线程是否正在运行?因为我的应用程序中已经有多个线程在运行.
我们的堆栈成员将如何帮助我.
java ×8
wait ×2
comparable ×1
comparator ×1
implements ×1
java-threads ×1
jvisualvm ×1
jvm ×1
runnable ×1
visualvm ×1