1, 线程池调度线程,而不是new Thread.startI()调度
public class TestExecutorService { public static void main( String[] args ) { // 同时最多只能有2个线程 nThreads ExecutorService pool = Executors.newFixedThreadPool( 2 ); Thread t1 = new MyThread(); Thread t2 = new MyThread(); Thread t3 = new MyThread(); // 将线程放入池中进行执行 pool.execute( t1 );// pool.execute( t2 ); pool.execute( t3 ); // 关闭线程池 pool.shutdown(); } } class MyThread extends Thread { @Override public void run() { System.out.println( Thread.currentThread() + "is running" ); try { Thread.sleep( 1000 ); } catch ( InterruptedException e ) { e.printStackTrace(); } } }
2,线程关闭,Futrue,Callable
public class TestExecutorService { public static void main( String[] args ) throws Exception { ExecutorService threadPool = Executors.newSingleThreadExecutor(); Future<Boolean> future = threadPool.submit( new Callable<Boolean>() { @Override public Boolean call() throws Exception { System.out.println( "start......" ); Thread.sleep( 1000 * 10 ); System.out.println( "end........" ); return Boolean.TRUE; } } ); System.out.println( "future get start....." ); // time out 后,线程仍会执行, // boolean rst = future.get( 2, TimeUnit.SECONDS ); // System.out.println("Callable. run end = "+rst); // 测试mian线程threadPool不会主动关闭,不用future.get( 2, TimeUnit.SECONDS );一次只测一个 // future.get(); System.out.println( "future get end....." ); threadPool.shutdown(); // Callable中的方法,没有执行完就退出了 System.out.println(future.cancel( true )); } }
相关推荐
ExecutorService exec = Executors.newCachedThreadPool(); for (int i = 0; i ; i++) { exec.execute(new Task(i)); } exec.shutdown(); } } ``` #### 五、线程的终止与优先级 **1. 终止线程** 在某些情况...
- 通过`ExecutorService`和`ThreadPoolExecutor`来管理线程,提高性能和资源利用率。 - 提供线程复用,避免频繁创建和销毁线程的开销。 8. **线程优先级** - Java提供了10级线程优先级,但实际效果依赖于操作...
Java中的`ExecutorService`和`ThreadPoolExecutor`允许我们管理线程,避免频繁创建和销毁线程的开销。线程池可以预创建一定数量的线程,任务到来时直接分配,提高效率。 4. **Java文件I/O操作**: - `java.io`包...
Java多线程编程是Java开发中的重要组成部分,它允许程序同时执行多个任务,提升软件的效率和响应...在实际项目中,结合Java的开源库,如`java-multi-thread-programming-master`,可以进一步提升我们的多线程编程能力。
多线程的核心在于Java的`Thread`类或`ExecutorService`接口,它们提供了创建和管理线程的机制。在本实例中,可能采用了以下步骤: 1. **任务拆分**:首先,需要将文件系统中的搜索范围划分为若干个子集,每个子集...
"thread-multi.zip"这个压缩包文件显然包含了一个与Java多线程相关的项目,它可能是一个示例工程,帮助开发者理解如何利用多线程来查询批量数据。下面我们将详细探讨Java多线程的相关知识点以及在批量数据查询中的...
例如,`ExecutorService`和`ThreadPoolExecutor`可以有效地管理线程,避免频繁创建和销毁线程带来的开销。`BlockingQueue`是一种线程安全的数据结构,适用于生产者-消费者模式。`Atomic`类提供了一组原子操作,能够...
- `Thread` 类:通过继承 `Thread` 类并重写 `run()` 方法来创建线程。 - `Runnable` 接口:实现 `Runnable` 接口,然后将其实例传递给 `Thread` 的构造函数,避免单继承限制。 - `ExecutorService` 和 `...
`java.lang.Thread`类是Java中创建和管理线程的基础,开发者可以通过创建Thread的实例并调用其`start()`方法来启动线程。此外,Java的并发API(java.util.concurrent)提供了一系列高级工具,如ExecutorService、...
`nimbo-java-multi-threading`项目提供了丰富的示例代码,帮助开发者深入理解和实践Java的多线程技术。以下将详细讲解Java多线程的相关知识点。 1. **线程的创建** - **继承Thread类**:通过继承`java.lang.Thread...
- `ExecutorService`与`ThreadPoolExecutor`:更高级的多线程管理方式,可以控制线程池的大小,避免线程过度创建和销毁,提高系统效率。 4. **异常处理**:在网络编程中,常见的异常如`IOException`需要妥善处理,...
在Java中,可以通过两种方式创建线程:继承Thread类或实现Runnable接口。在这个项目中,每个角色(如食客、厨师)可能都代表一个独立的线程,每个线程负责特定的任务,例如食客下单、厨师烹饪、烤箱烘烤食物等。这种...
在项目"Multi-Threading-master"中,很可能包含了一个实际的Java实现,通过研究源码,我们可以更深入地理解如何在多线程环境下构建和操作单词树。通过这种方式,我们可以提升程序的并发性能,同时保证数据的一致性和...
"multi thread new" 可能指的是在Java或者C++等编程语言中创建新线程的方法。在现代计算环境中,多线程使得程序能够同时执行多个任务,从而提高了处理器的利用率和程序的响应速度。 一、多线程基础 1. **线程定义*...
线程优先级范围是1(Thread.MIN_PRIORITY)到10(Thread.MAX_PRIORITY),默认优先级是5(Thread.NORM_PRIORITY)。优先级高的线程可能先被执行,但不保证。 七、守护线程(Daemon Thread) 守护线程是一种特殊的...
标题中的"multi_thread_example"和描述中的"multi_thread_examples"都指向了多线程编程的例子。在Java中,多线程是并发处理任务的关键技术,它允许多个执行单元(线程)同时运行,提高程序的效率和响应速度。本项目...
三、线程控制 Java提供了多种方法来控制线程的执行,如sleep()使线程暂停指定时间,join()让当前线程等待指定线程结束,yield()让当前线程放弃CPU使用权等。此外,还可以使用synchronized关键字实现线程同步,防止...
在“java basic, such as multi thread, functional programming”这个主题中,我们将深入探讨Java中的多线程和函数式编程两个重要概念。 首先,让我们来了解多线程。在Java中,多线程允许程序同时执行多个任务,极...
首先,标题中的“Java线程编程学习笔记(二)”表明这是系列教程的第二部分,暗示了前一部分可能已经介绍了线程的基础概念,如如何创建线程(通过实现Runnable接口或继承Thread类)、线程的状态(新建、就绪、运行、...
- **java.util.concurrent**包:提供了高级的并发工具类,如`ExecutorService`、`Semaphore`、`CountDownLatch`等。 #### 线程间的通信 - **等待/通知机制**:通过`wait()`、`notify()`和`notifyAll()`方法实现...