`

这段代码执行任务时启动了几个线程?

 
阅读更多
import java.util.Timer;
import java.util.TimerTask;

public class Show {

	public static void main(String[] args) {
		Timer timer = new Timer();
		timer.schedule(new AnyTimerTask("1"),1000);
		timer.schedule(new AnyTimerTask("2"),1000);
		timer.schedule(new AnyTimerTask("3"),1000);
		timer.schedule(new AnyTimerTask("4"),1000);
		timer.schedule(new AnyTimerTask("5"),1000);
		timer.schedule(new AnyTimerTask("6"),1000);

	}

}

class AnyTimerTask extends TimerTask {

	private String threadName;

	public AnyTimerTask(String threadName) {
		this.threadName = threadName;
	}

	public String getThreadName() {
		return threadName;
	}

	@Override
	public void run() {
		System.out.println(" Thread.currentThread().getName() "
		    + Thread.currentThread().getName() + " taskName " + threadName + "==="
		    + System.nanoTime());
	}
}

 

分享到:
评论
2 楼 ChinaEstone 2013-08-07  
再举一个例子:
RunnableImpl impl = new RunnableImpl();
impl.run()
这样会启动一个新线程吗?
interface ISomeInterface {
   void run()
}

class SomeImpl implements ISomeInterface {
    void run(){
       // todo something
    }
}

SomeImpl some = new SomeImpl();
some.run()
这个会启动一个新的线程吗?
两个例子一比较,一目了然,绝对不会。
1 楼 ChinaEstone 2013-08-07  
只有一个timer的线程,以前理解的时候任务runable接口实现,调用它的时候,都启动一个线程,现在看,其实不然。Runnable只是一个接口,实现这个接口的类型只有通过
Thread thread = new Thread(new RunnableImpl())包装启动后,才算是启动了一个新的线程。否则他就只是一个实现了接口的类。单纯实现了Runnable的类的和单纯实现一个普通接口的类一样,只有通过 Thread包装,实现后,才会创建一个新的线程。

相关推荐

    多线程并发执行任务

    多线程并发执行意味着多个线程在同一时间段内交替运行,提升了程序的执行效率。 在Java中,创建线程有两种主要方式: 1. 继承`Thread`类:创建一个新的类,该类继承自`java.lang.Thread`,然后重写`run()`方法。...

    Winform基于多线程实现每隔1分钟执行一段代码

    【Winform基于多线程实现每隔1分钟执行一段代码】的知识点主要集中在以下几个方面: 1. **多线程**:在Windows Forms(Winform)应用中,为了不影响UI线程的响应,通常会使用多线程来执行长时间或计算密集型的任务...

    易语言批量启动多线程源码

    源码使用说明.txt则提供了对源码功能和使用方法的详细解释,帮助用户理解和应用这段代码。 在易语言中实现多线程,通常需要以下几个关键步骤: 1. **创建线程对象**:使用易语言的线程控制类,如`创建线程`命令,...

    java线程定时启动

    子类必须重写`run()`方法,该方法将由`Timer`调用以执行任务。 #### 三、代码示例解析 在给定的代码片段中,定义了一个名为`PriTimerTask`的类,它继承自`TimerTask`。此外,还有一个`MainTest`类,包含了`main`...

    VC++挂起、启动和恢复线程的方法实例

    但需要注意的是,如果一个线程正处在关键区域(如互斥锁保护的代码段),挂起可能会导致死锁。 ```cpp DWORD SuspendedCount = SuspendThread(hThread); if (SuspendedCount == (DWORD)-1) { // 错误处理 } ``` 3...

    JAVA实现多线程时钟代码程序

    通过这个例子,我们可以学习到以下几个重要的知识点: 1. **线程基础**:Java中的线程可以通过两种方式创建——继承Thread类或实现Runnable接口。在这个项目中,我们可能会看到`implements Runnable`的方式,因为...

    易语言多线程传递自定义数据(免加延时方法)

    在编程领域,多线程是实现并发执行任务的重要机制,特别是在资源丰富的环境下,如多核处理器系统。易语言,作为一款中国本土的编程语言,也提供了支持多线程的特性,使得开发者能够利用多线程的优势提高程序的执行...

    C++学习 线程创建代码

    这段代码是一个典型的使用Windows API来创建线程的例子,尤其适合C++初学者作为学习线程编程的基础。 ### 线程简介 线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位。一个...

    易语言正确退出线程

    线程是程序中的执行路径,一个进程可以包含多个线程,它们共享同一内存空间,各自执行不同的任务。多线程可以提高程序的并发性,使得程序能够同时处理多个任务,从而提升效率。 在易语言中,创建线程通常使用“创建...

    几个swing多线程的例子

    这是因为 Swing 不是线程安全的,如果多个线程同时修改组件状态,可能会引发不可预测的问题。 2. **SwingWorker**: Java 5 引入了 `javax.swing.SwingWorker` 类,它为在后台线程执行计算任务提供了便利。...

    多线程thread线程的理解

    在学习多线程时,我们需要理解以下几个核心概念: 1. **线程的创建**:程序可以通过创建`Thread`对象并调用其`start()`方法来启动一个新线程。在Java中,还可以通过实现`Runnable`接口或继承`Thread`类来创建线程。...

    利用临界区同步线程例子

    TCriticalSection提供了一种线程安全的方式来保护代码段,确保同一时间只有一个线程可以执行这段代码。 在我们的例子中,我们创建一个名为`TThreadSyncExample`的类,它包含了三个线程成员变量,每个线程都有自己的...

    这是在VB中实现真正的多线程操作的代码

    然而,随着VB.NET的出现,这个问题得到了解决,VB.NET提供了System.Threading命名空间,允许开发者创建和管理多个线程。在标题和描述中提到的,这是一段使用VB实现多线程的代码,可能适用于VB.NET企业版,因为它提供...

    DELPHI 线程技术 例子

    线程允许程序在单个进程中同时执行多个独立的代码段,从而提高应用程序的响应速度和资源利用效率。本示例提供了DELPHI环境中实现线程技术的源代码,帮助开发者理解和掌握线程的创建、管理以及同步等核心知识点。 ...

    ASP.NET(C#) 定时执行一段代码

    让我们详细分析这段代码: 1. `Application_Start`: 这个方法在应用程序首次启动或重新启动时被调用。在这里,我们首先定义了日志文件的路径`LogPath`,并初始化了一个新的线程`thread`。 2. `LogPath = ...

    易语言多线程操作

    这个命令需要指定一个线程入口子程序,也就是新线程开始执行的代码段。创建线程时,可以传递参数给线程函数,以便线程执行特定的任务。 2. **线程同步**:在多线程环境中,线程间可能会共享数据,这就需要同步机制...

    java线程入门级书籍

    - **join()方法**:一个线程调用另一个线程的`join()`方法可以等待后者执行完毕。 - **CountDownLatch类**:可以用来等待一组线程执行完毕。 - **CyclicBarrier类**:可以等待一组线程到达指定的屏障点后继续执行。 ...

    多线程示例,同时同步到进度条

    在IT领域,多线程是程序设计中的一个重要概念,特别是在并发处理和性能优化时。标题“多线程示例,同时同步到进度条”表明我们要探讨的...通过阅读和分析这段代码,可以深入理解多线程环境下同步更新进度条的具体实现。

    Java多线程知识点总结

    当一个线程试图进入一个已经被另一个线程持有的同步代码块时,它将进入阻塞状态,直到同步代码块的执行线程释放锁。同样,当线程使用wait方法时,它会主动释放锁并进入等待状态,直到其他线程调用notify或notifyAll...

Global site tag (gtag.js) - Google Analytics