Possible Duplicate: Java: “implements Runnable” vs. “extends Thread” I'm just wondering is there some subtle difference between creating your own custom object that extends Thread and creating a thread using the Thread(Runnable) constructor? I have some code that works fine when I use classes that extend Thread, but if I try to use logic that creates Threads by using the Thread(Runnable
可能重复: Java:“实现Runnable”与“扩展线程” 我只是想知道创建自己的自定义对象来扩展Thread并使用Thread(Runnable)构造函数创建线程之间有一些细微的差别吗? 当我使用扩展线程的类时,我有一些工作正常的代码,但是如果我尝试使用通过使用线程(Runnable)构造函数创建线程的逻辑,新线程似乎不能正常工作 - 我无法检测到它们像我使用我制作的自定义子类一样活着,而且他们似乎永远不会结束。 在我的代码中,我只
Possible Duplicate: Java: “implements Runnable” vs. “extends Thread” I have two questions about multithreaded programming. I read a few answers on the internet, but still I can't find a satisfying answer. Implementing the Runnable is preferred over extending the thread class. Why? How is it that we are able to get away with overriding just the run() method? According to 'The C
可能重复: Java:“实现Runnable”与“扩展线程” 我有两个有关多线程编程的问题。 我在网上阅读了一些答案,但仍然找不到令人满意的答案。 实现Runnable比扩展线程类更受欢迎。 为什么? 我们如何能够忽略run()方法? 根据Herbert Schildt的“The Complete Reference to Java”,如果我们不覆盖除run()以外的任何Thread类的方法,最好是实现Runnable。 我的第二个问题可能听起来有点愚蠢,但我似乎错过了一些东西
This question already has an answer here: “implements Runnable” vs. “extends Thread” 40 answers 1. Java doesn't support multiple inheritance, which means you can only extend one Java class, so once you extended Thread class you lost your chance and cannot extend(inherit) another class in java. 2. In OOP extending a class generally means adding new functionality, modifying or improve beh
这个问题在这里已经有了答案: “实现可运行”与“扩展线程”40个答案 1. Java不支持多继承,这意味着你只能扩展一个Java类,所以一旦你扩展了Thread类,你就失去了机会,不能扩展(继承)java中的另一个类。 2.在OOP中,扩展类通常意味着增加新的功能,修改或改进行为。 如果您没有对Thread进行任何修改,请改为使用Runnable接口。 3.实现Runnable使你的类更加灵活(你可以实现多个接口)。 其中一个重大优势是:您不必
Possible Duplicate: Java: “implements Runnable” vs. “extends Thread” 1) Why does Java language provide both Thread and Runnable? 2) What are the advantages of thread over runnable ( why couldnt Java just provide a runnable) 3) Can we make a runnable sleep, give it an id etc? 1. Thread is a class, and when you say .start() you create a thread of execution which is attached to an Instance of
可能重复: Java:“实现Runnable”与“扩展线程” 1)为什么Java语言提供了Thread和Runnable? 2)线程优于可运行的(为什么Java不能提供可运行的)3)我们可以做一个可运行的睡眠,给它一个ID等? 1.线程是一个类,并且当你说.start()创建一个thread of execution ,其被附接到螺纹类的一个实例。 Runnable的run()方法被称为使其执行任务到 thread of execution ,并且start()方法快速返回。 2. Runnable是分配给newly c
This question already has an answer here: “implements Runnable” vs. “extends Thread” 40 answers Here's what the javadoc states There are two ways to create a new thread of execution. One is to declare a class to be a subclass of Thread . This subclass should override the run method of class Thread. An instance of the subclass can then be allocated and started. For example, a thread
这个问题在这里已经有了答案: “实现可运行”与“扩展线程”40个答案 这是javadoc的状态 有两种方法可以创建一个新的执行线程。 一种是将一个类声明为Thread的子类 。 这个子类应该重写Thread类的run方法。 然后可以分配和启动子类的一个实例。 例如,计算大于所述值的素数的线程可以写成如下: 另一种创建线程的方式是声明一个实现了Runnable接口的类。 那个类然后实现了run方法。 然后可以分配一个类的实例,在创建
This question already has an answer here: “implements Runnable” vs. “extends Thread” 40 answers This way you decouple the computation ( the what ) from the execution ( the when and/or the how ). With Runnable or Callable , you can for instance submit many work/computation to an Executor which will take care to schedule the stuffs. Here is an excerpt form ExecutorService: pool = Executors.
这个问题在这里已经有了答案: “实现可运行”与“扩展线程”40个答案 通过这种方式,您可以将计算( 即什么 )与执行( 何时和/或如何 ) 分开 。 通过Runnable或Callable ,您可以将许多工作/计算提交给Executor ,以便安排这些工作。 这是ExecutorService的一个摘录表单: pool = Executors.newFixedThreadPool(poolSize); ... pool.execute(new Handler(serverSocket.accept())); ... class Handler implements Runnable
This question already has an answer here: “implements Runnable” vs. “extends Thread” 40 answers extends Thread : your thread creates unique object and associate with it implements Runnable : it shares the same object to multiple threads Another thing to note, since you can extend only one class in Java, if you extends Thread , you can't extend another class. If you choose to impl
这个问题在这里已经有了答案: “实现可运行”与“扩展线程”40个答案 extends Thread : 你的线程创建独特的对象并与之关联 implements Runnable : 它将同一个对象共享给多个线程 另外需要注意的是,由于只能扩展Java中的一个类,因此如果extends Thread ,则不能扩展另一个类。 如果选择implement Runnable ,则可以继续扩展类。 从技术上讲,只有一种方法:实现Runnable 。 顺便说一句, Thread就是这么做的,所
Can you think about any reason why this code doesn't work and always outputs "finished", but the second example works without any problems. I'm using latest JDK (8u45). public static class MyClass implements Runnable { @Override public void run() { try { Thread.sleep(2000); } catch (InterruptedException ex) {
你能想一想为什么这段代码不起作用,总是输出“完成”,但第二个例子没有任何问题。 我正在使用最新的JDK(8u45)。 public static class MyClass implements Runnable { @Override public void run() { try { Thread.sleep(2000); } catch (InterruptedException ex) { System.out.println("Interrupted"); return; }
I have created 3 threads which are accessing inner class MyInnerClass of ThreadsAroundInnerClasses outer class. package com.test; public class ThreadsAroundInnerClasses { public static void main(String[] args) { Thread t1 = new Thread(new MyThread(), "THREAD-1"); Thread t2 = new Thread(new MyThread(), "THREAD-2"); Thread t3 = new Thread(new MyThread(), "THREAD-3");
我创建了3个正在访问ThreadsAroundInnerClasses外部类的内部类MyInnerClass的ThreadsAroundInnerClasses 。 package com.test; public class ThreadsAroundInnerClasses { public static void main(String[] args) { Thread t1 = new Thread(new MyThread(), "THREAD-1"); Thread t2 = new Thread(new MyThread(), "THREAD-2"); Thread t3 = new Thread(new MyThread(), "THREAD-3"); t1.
This question already has an answer here: Java Thread priority has no effect 10 answers That happens because of Thread.sleep(1000); if your higher priority thread is in sleep mode then any other thread get chance to execute it remove this block and check "Bob Job" finish first. See... there will be one or more processrs in your system... Now, whenever you run a java program, e
这个问题在这里已经有了答案: Java线程优先级无效10个答案 那是因为 Thread.sleep(1000); 如果您的更高优先级的线程处于睡眠模式,则任何其他线程都有机会执行它 删除此块并检查“鲍勃作业”先完成。 请参阅......系统中会有一个或多个处理器......现在,无论何时运行java程序,每个程序都将拥有自己的JVM实例。只要程序尝试做某件事,底层JVM就会使调用操作系统来实现它。JVM本身无法完成某些任务,只是将这些调用转发