runable类:
package thread;
public class LiftOff implements Runnable
{
protected int countDown = 10;// default;
private static int taskCount = 0;
private final int id = taskCount++;
public LiftOff()
{
}
public LiftOff(int countDown)
{
this.countDown = countDown;
}
public String status()
{
return "#" + id + "(" + (countDown > 0 ? countDown : "LiftOff!") + "),";
}
@Override
public void run()
{
while (countDown-- > 0)
{
System.out.print(status());
Thread.yield();
}
}
}
相当于普通方法的调用:
package thread;
public class MainThread
{
public static void main(String[] args)
{
LiftOff o = new LiftOff();
o.run();// 相当于调用普通的方法
}
}
普通的创建
package thread;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
/** CachedThreadPool在程序执行中通常会创建与所需数量相同的线程,一般情况下首选 */
public class CachedThreadPool
{
public static void main(String[] args)
{
ExecutorService service = Executors.newCachedThreadPool();
for (int i = 0; i < 5; i++)
service.execute(new LiftOff());
service.shutdown();// 可以防止新任务被提交给这个Executor
}
}
交给执行器创建
package thread;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
/** CachedThreadPool在程序执行中通常会创建与所需数量相同的线程,一般情况下首选 */
public class CachedThreadPool
{
public static void main(String[] args)
{
ExecutorService service = Executors.newCachedThreadPool();
//Executors.newFixedThreadPool(5);// 限制数量的线程池
//Executors.newSingleThreadExecutor();// 相当于线程数量为1的FixedThreadPool
for (int i = 0; i < 5; i++)
service.execute(new LiftOff());
service.shutdown();// 可以防止新任务被提交给这个Executor
}
}
分享到:
相关推荐
线程是操作系统分配CPU执行时间的基本单位,它在多任务并行处理中起着至关重要的作用。线程的控制方式和通信方式是并发编程中必须掌握的关键知识点,这对于理解和优化程序性能至关重要。以下是对这些概念的详细阐述...
6. Atomic类:提供了一组原子操作类,如AtomicInteger、AtomicLong等,它们在多线程环境中提供了一种无锁的更新方式,保证了数据的完整性。 此外,还有如ScheduledExecutorService用于定时任务,BlockingQueue用于...
在Java中,线程不能被直接"关闭",但可以通过以下几种方式结束线程: - 设置共享变量:在线程函数中检查某个共享变量,当满足特定条件时,线程自行结束。 - 使用Thread类的interrupt()方法:向线程发送中断信号,...
继承 Thread 类是一种简单的多线程创建方式。只需要创建一个新的类,继承 Thread 类,并复写 run() 方法,就可以启动新线程并执行自己定义的 run() 方法。 Thread 类的生命周期 -------------------- Thread 类的...
本篇文章将详细探讨在C++环境下,Windows系统中的几种线程同步机制:Mutex、Event以及Semaphore。 1. **Mutex(互斥量)** Mutex是一种基本的线程同步工具,用于保护共享资源免受多个线程同时访问。当一个线程获得...
在Linux中,线程是操作系统中的一种基本单元,它是进程中的一个执行路径。线程之间共享同一个虚拟地址空间,包括代码段、数据段和堆栈段。每个线程都有自己的寄存器和栈,但它们共享同一个虚拟地址空间。 Linux线程...
Thread 类是 Java 中的基本线程类,通过继承 Thread 类可以创建自己的线程类。Thread 类提供了几个重要的方法,包括 start() 方法、run() 方法和 join() 方法。 * start() 方法:启动线程的执行。 * run() 方法:...
我们可以创建一个`Thread`对象,并传递一个委托(代表线程要执行的方法)给构造函数。例如: ```csharp Thread thread = new Thread(new ThreadStart(YourMethod)); thread.Start(); ``` 其中,`YourMethod`是...
`moveToThread`函数是QT多线程编程中的一个重要方法,它允许我们将一个对象移动到指定的QThread对象中,从而使该对象的工作在新的线程上下文中执行。 首先,理解多线程的基本概念至关重要。在计算机科学中,线程是...
Android提供了几种处理后台任务的方式,如AsyncTask、IntentService、Handler-Looper机制以及使用Java多线程原生API(Thread、Runnable)。 3. **AsyncTask**: AsyncTask是一个轻量级的异步任务类,适合短时间、...
根据提供的实习日志内容,我们可以总结出以下几个关键知识点: ### 1. 线程的基本概念 - **定义**:线程是比进程更轻量级的执行单元,多个线程可以共享同一个进程的内存空间,这使得它们之间的通信更加高效。 - **...
线程在其生命周期中会经历以下几种状态: - **NEW**: 尚未启动的线程处于此状态。 - **RUNNABLE**: 在Java虚拟机中正在执行的线程处于此状态。 - **BLOCKED**: 被阻塞等待监视器锁的线程处于此状态。 - **WAITING**...
《深入理解Libevent多线程机制:以libevent-thread-20140224-1源码为例》 Libevent是一个强大的事件通知库,它允许程序员在多个平台上高效地处理网络事件,如TCP、UDP、Unix域套接字等。在单线程环境中,Libevent...
在编程领域,线程是程序执行的最小单元,它允许应用程序同时执行多个任务。Java中的`Thread`类是实现多线程的核心类,通过创建并启动`Thread`对象,我们可以让程序并行运行不同的任务,从而提高程序的效率。本文将...
嵌入式 Linux 高级编程中的线程编程是指在一个程序中创建多个执行路线的技术,称为线程。线程是“一个进程内部的一个控制序列”,它与进程不同,进程是操作系统分配资源的基本单位,而线程是进程内部的一部分,共享...
在IT领域,多线程并发执行任务是一种常见的优化策略,特别是在服务器端开发、实时系统以及高性能计算中。本文将深入探讨多线程并发执行任务的相关知识点,并基于提供的`MyThread.java`文件,来分析和理解如何在Java...
在IT行业中,多线程是一种常见的编程技术,它允许程序同时执行多个任务,极大地提高了效率。在本案例中,"thread-music.rar_音乐线程单独" 的主题着重于如何在一个单独的线程中处理音乐播放,这尤其适用于避免主线程...
线程在其生命周期中会经历以下几种状态: - **创建**:通过调用`pthread_create()`函数创建一个新的线程。 - **就绪**:线程被创建后,等待CPU时间片进行调度。 - **运行**:获得CPU时间片并开始执行。 - **阻塞**...
线程池是一种多线程编程中的管理机制,它允许开发者预先创建一组线程,并将它们组织起来以便在需要时能够高效地复用。在Windows API和C++标准库中,都提供了实现线程池的接口。这个“VC_simple-thread-pool.rar”...
线程是操作系统调度的基本单位,它允许程序同时执行多个任务,极大地提高了程序的并发性和效率。在编程中,我们有多种方法来创建和管理线程。以下是对这些方法的详细阐述,适合初学者理解。 1. 继承Thread类: 在...