`
helloyesyes
  • 浏览: 1304006 次
  • 性别: Icon_minigender_2
  • 来自: 武汉
文章分类
社区版块
存档分类
最新评论

线程创建

阅读更多

Service.java

public interface Service {

public void run();

}

WorkService.java

public class WorkService implements Service {

public void run() {
// TODO Auto-generated method stub
System.out.println("Hello, work!");
}

}

方式一:

RunService.java

public class RunService implements Runnable {
private Service service = null;
public void run() {
// TODO Auto-generated method stub
try {
Thread.sleep(1);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if(service != null) {
service.run();
}
}
public Service getService() {
return service;
}
public void setService(Service service) {
this.service = service;
}

}

ThreadFactory.java

public class ThreadFactory {
public static void create(Class className) {
RunService service = new RunService();
try {
service.setService((Service)className.newInstance());
new Thread(service).start();
} catch (InstantiationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}

Main.java

public class Main {

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub

ThreadFactory.create(WorkService.class);

try {
Thread.sleep(2);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

System.out.println("Hello, work! 2 ");
}

}

方式二:

RunService.java

public class RunService extends Thread {
private Service service = null;
public void run() {
// TODO Auto-generated method stub
try {
Thread.sleep(1);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if(service != null) {
service.run();
}
}
public Service getService() {
return service;
}
public void setService(Service service) {
this.service = service;
}
}

ThreadFactory.java

public class ThreadFactory {
public static void create(Class className) {
RunService service = new RunService();

try {
service.setService((Service)className.newInstance());
service.start();
} catch (InstantiationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}

分享到:
评论

相关推荐

    线程创建和管理

    线程创建和管理 线程创建和管理是多线程编程中一个非常重要的概念,在实际开发中,合理地创建和管理线程可以提高程序的效率和性能。在C#中,线程池和Thread类是两种常用的线程创建和管理方式。 一、线程池...

    实验二:Linux多线程创建.docx

    Linux 多线程创建实验 本实验的目的是为了进一步掌握在 Linux 系统进行 C 语言编程的方法,进一步了解线程的概念,进一步理解进程与线程的概念,并掌握 C 语言线程创建的方法。 实验原理: 1. Pthread_create ...

    C++学习 线程创建代码

    在深入探讨给定的C++线程创建代码之前,我们首先需要理解几个核心概念:线程、线程函数、线程句柄以及Windows API函数。这段代码是一个典型的使用Windows API来创建线程的例子,尤其适合C++初学者作为学习线程编程的...

    linux C++ 实现线程池(避免线程创建的耗时)

    这种设计减少了线程创建和销毁的时间,降低了系统资源的消耗。 2. **pthread库**:在Linux系统中,C++多线程编程通常使用POSIX线程库(pthread),它是跨平台的标准线程API。`pthread_create()`用于创建新的线程,`...

    C# Winform线程创建子窗体

    本话题将深入探讨如何利用线程来延迟创建子窗体,并且如何安全地跨线程控制主窗体的控件。 首先,我们来理解什么是Winform和线程。Winform是.NET Framework中的一个用于构建桌面应用程序的库,它提供了丰富的UI控件...

    线程创建和线程间的通信

    线程创建: 在大多数操作系统中,线程是轻量级的进程,它们共享同一内存空间,使得它们可以快速地在不同任务之间切换。线程的创建通常涉及以下几个步骤: 1. 创建线程对象:首先,我们需要创建一个线程对象,这通常...

    多线程创建按钮

    "多线程创建按钮"这个标题所指的,可能是一个具体的编程示例或者一个自定义控件,用于演示如何在多线程环境下创建和操作界面上的按钮。下面,我们将深入探讨多线程和创建按钮的相关知识点。 1. **多线程基础**: -...

    Linux线程创建的过程剖析[参考].pdf

    Linux线程创建过程剖析 Linux线程创建的过程剖析是Linux系统中一个非常重要的主题。通过分析pthread_create()函数的实现,我们可以了解到Linux线程创建的整个过程。下面是线程创建过程的详细剖析。 1. 获取线程栈...

    26_多线程_第1天(Thread、线程创建、线程池)_讲义

    本讲义主要探讨了三个核心主题:Thread类、线程创建以及线程池。 1. **Thread类** Java中的`Thread`类是所有线程的基础,它是Java.lang.Thread的直接或间接子类。通过继承Thread类,我们可以覆盖它的`run()`方法来...

    HotSpot线程实现-线程创建1

    《HotSpot线程实现——线程创建》 在Java编程中,线程是我们处理并发和多任务的基础。本文将深入探讨HotSpot虚拟机中线程的实现,主要关注线程的创建过程。我们使用的JDK版本为1.7。请注意,本文不会涉及Java线程的...

    【C#】进程中最大线程创建数量分析

    多线程在当今软件开发中应用非常广泛,在实际开发过程中,发现很多不正确...本文将分别研究32位进程和64位进程下,可以创建最大线程数量及资源占用情况,供研发及设计人员参考。 研发环境:Win7 64位,.Net 3.5,VS2010

    多线程创建于销毁实现代码

    1. **线程创建**: 在Windows API中,可以使用`CreateThread`函数来创建一个新的线程。该函数接收一系列参数,包括线程函数的地址、线程的初始数据、堆栈大小、创建标志等。线程函数是新线程执行的入口点,通常定义...

    我的线程创建程序.rar_C++ 创建线程

    本资源“我的线程创建程序.rar”提供了一个学习C++创建线程的实例,这将帮助开发者更好地理解和掌握线程编程的核心概念。 在C++11及更高版本中,线程支持被纳入了标准库,我们可以使用`<thread>`头文件来创建和管理...

    多线程创建的聊天小软件

    【标题】:“多线程创建的聊天小软件” 在计算机编程中,多线程是一种并发执行任务的技术,它允许多个任务在单个程序中同时运行。在这个“多线程创建的聊天小软件”中,我们可以理解到这个软件是利用多线程技术来...

    VS2019 MFC线程的创建

    总结起来,VS2019中的MFC线程创建涉及到创建自定义线程类、覆写关键成员函数、使用 `AfxBeginThread()` 创建线程以及进行线程同步。理解这些概念和实践,对于开发高效、稳定的多线程MFC应用至关重要。

    线程创建的封装 Windows,Linux

    首先,我们来看Windows系统的线程创建。Windows API提供了CreateThread函数来创建新的线程。这个函数接收一系列参数,包括线程函数的地址、参数、堆栈大小、创建标志等。线程函数是一个回调函数,当新线程开始执行时...

    MFC线程创建之旅.pdf

    本文将详细讲解MFC线程创建的过程,以工作线程为例,帮助开发者理解如何在MFC环境中创建线程。 首先,线程是操作系统资源,用于并发执行任务。在MFC中,线程分为工作线程和UI线程。工作线程不包含用户界面元素,...

    Lucene5学习之多线程创建索引

    《Lucene5学习之多线程创建索引》 在深入了解Lucene5的多线程索引创建之前,我们先来了解一下Lucene的基本概念。Lucene是一个高性能、全文本搜索库,由Apache软件基金会开发。它提供了强大的文本分析、索引和搜索...

    MFC多线程创建非模态对话框(防止一闪而逝)

    在提供的"多线程创建非模态对话框防闪逝demo"中,你可以找到具体实现的代码示例,通过学习和实践,你可以更好地理解和掌握这一技术。 总结来说,MFC多线程创建非模态对话框的关键在于合理分配任务到不同的线程,...

Global site tag (gtag.js) - Google Analytics