`

thread-->线程的几种基本执行方式

阅读更多

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执行时间的基本单位,它在多任务并行处理中起着至关重要的作用。线程的控制方式和通信方式是并发编程中必须掌握的关键知识点,这对于理解和优化程序性能至关重要。以下是对这些概念的详细阐述...

    thread.zip--狂神多线程+juc

    6. Atomic类:提供了一组原子操作类,如AtomicInteger、AtomicLong等,它们在多线程环境中提供了一种无锁的更新方式,保证了数据的完整性。 此外,还有如ScheduledExecutorService用于定时任务,BlockingQueue用于...

    多线程demo程序-轻松掌握多线程技术

    在Java中,线程不能被直接"关闭",但可以通过以下几种方式结束线程: - 设置共享变量:在线程函数中检查某个共享变量,当满足特定条件时,线程自行结束。 - 使用Thread类的interrupt()方法:向线程发送中断信号,...

    多线程+售票案例.docx

    继承 Thread 类是一种简单的多线程创建方式。只需要创建一个新的类,继承 Thread 类,并复写 run() 方法,就可以启动新线程并执行自己定义的 run() 方法。 Thread 类的生命周期 -------------------- Thread 类的...

    windows线程几种同步方式

    本篇文章将详细探讨在C++环境下,Windows系统中的几种线程同步机制:Mutex、Event以及Semaphore。 1. **Mutex(互斥量)** Mutex是一种基本的线程同步工具,用于保护共享资源免受多个线程同时访问。当一个线程获得...

    操作系统-4.4-Linux线程编程1

    在Linux中,线程是操作系统中的一种基本单元,它是进程中的一个执行路径。线程之间共享同一个虚拟地址空间,包括代码段、数据段和堆栈段。每个线程都有自己的寄存器和栈,但它们共享同一个虚拟地址空间。 Linux线程...

    21-多线程和线程同步1

    Thread 类是 Java 中的基本线程类,通过继承 Thread 类可以创建自己的线程类。Thread 类提供了几个重要的方法,包括 start() 方法、run() 方法和 join() 方法。 * start() 方法:启动线程的执行。 * run() 方法:...

    初始化多线程的几种方法

    我们可以创建一个`Thread`对象,并传递一个委托(代表线程要执行的方法)给构造函数。例如: ```csharp Thread thread = new Thread(new ThreadStart(YourMethod)); thread.Start(); ``` 其中,`YourMethod`是...

    QT多线程moveToThread使用方式

    `moveToThread`函数是QT多线程编程中的一个重要方法,它允许我们将一个对象移动到指定的QThread对象中,从而使该对象的工作在新的线程上下文中执行。 首先,理解多线程的基本概念至关重要。在计算机科学中,线程是...

    android 程序加载中,请稍后---- ProgressDialog与线程整合应用

    Android提供了几种处理后台任务的方式,如AsyncTask、IntentService、Handler-Looper机制以及使用Java多线程原生API(Thread、Runnable)。 3. **AsyncTask**: AsyncTask是一个轻量级的异步任务类,适合短时间、...

    嵌入式实习-day5-线程

    根据提供的实习日志内容,我们可以总结出以下几个关键知识点: ### 1. 线程的基本概念 - **定义**:线程是比进程更轻量级的执行单元,多个线程可以共享同一个进程的内存空间,这使得它们之间的通信更加高效。 - **...

    Android 线程 多线程 Multi-thread

    线程在其生命周期中会经历以下几种状态: - **NEW**: 尚未启动的线程处于此状态。 - **RUNNABLE**: 在Java虚拟机中正在执行的线程处于此状态。 - **BLOCKED**: 被阻塞等待监视器锁的线程处于此状态。 - **WAITING**...

    libevent-thread-20140224-1.7z

    《深入理解Libevent多线程机制:以libevent-thread-20140224-1源码为例》 Libevent是一个强大的事件通知库,它允许程序员在多个平台上高效地处理网络事件,如TCP、UDP、Unix域套接字等。在单线程环境中,Libevent...

    Thread类创建启用新线程

    在编程领域,线程是程序执行的最小单元,它允许应用程序同时执行多个任务。Java中的`Thread`类是实现多线程的核心类,通过创建并启动`Thread`对象,我们可以让程序并行运行不同的任务,从而提高程序的效率。本文将...

    嵌入式Linux高级编程--05posix_线程编程.ppt

    嵌入式 Linux 高级编程中的线程编程是指在一个程序中创建多个执行路线的技术,称为线程。线程是“一个进程内部的一个控制序列”,它与进程不同,进程是操作系统分配资源的基本单位,而线程是进程内部的一部分,共享...

    多线程并发执行任务

    在IT领域,多线程并发执行任务是一种常见的优化策略,特别是在服务器端开发、实时系统以及高性能计算中。本文将深入探讨多线程并发执行任务的相关知识点,并基于提供的`MyThread.java`文件,来分析和理解如何在Java...

    thread-muisc.rar_音乐线程单独

    在IT行业中,多线程是一种常见的编程技术,它允许程序同时执行多个任务,极大地提高了效率。在本案例中,"thread-music.rar_音乐线程单独" 的主题着重于如何在一个单独的线程中处理音乐播放,这尤其适用于避免主线程...

    并发服务器-多线程服务器详解

    线程在其生命周期中会经历以下几种状态: - **创建**:通过调用`pthread_create()`函数创建一个新的线程。 - **就绪**:线程被创建后,等待CPU时间片进行调度。 - **运行**:获得CPU时间片并开始执行。 - **阻塞**...

    VC_simple-thread-pool.rar_thread pool_vc thread_vc 线程池_vc线程_线程池

    线程池是一种多线程编程中的管理机制,它允许开发者预先创建一组线程,并将它们组织起来以便在需要时能够高效地复用。在Windows API和C++标准库中,都提供了实现线程池的接口。这个“VC_simple-thread-pool.rar”...

    几种方法编写线程代码

    线程是操作系统调度的基本单位,它允许程序同时执行多个任务,极大地提高了程序的并发性和效率。在编程中,我们有多种方法来创建和管理线程。以下是对这些方法的详细阐述,适合初学者理解。 1. 继承Thread类: 在...

Global site tag (gtag.js) - Google Analytics