用线程工厂创建线程

1.工厂模式/工厂

public class MyThreadFactory implements ThreadFactory {

private int counter;//线程数量    private String name;//线程名称    private List<String> stats;//线程对象信息    public MyThreadFactory(String name){        counter=0;        this.name=name;        stats=new ArrayList<String>();    }

//实例化thread对象    public Thread newThread(Runnable r) {        Thread t = new Thread(r,name+"_thread_"+counter);        counter++;        //保存线程创建时的信息        stats.add(String.format("created thread %d with name %s on %s\n",t.getId(),t.getName(),new Date()));        return t;    }

//返回stats集合信息    public String getStats(){        StringBuffer buffer=new StringBuffer();        Iterator<String> it=stats.iterator();        while (it.hasNext()) {            buffer.append(it.next());            buffer.append("\n");        }        return buffer.toString();    }

}
/** * 线程 */public class Task implements Runnable{    Log log = LogFactory.getLog(this.getClass());    public void run() {        try {            TimeUnit.SECONDS.sleep(1);            log.debug("thread sleep is not error");        } catch (InterruptedException e) {            e.printStackTrace();            log.debug("thread sleep is error in Task");        }    }}

//调用
public class Main {    public static void main(String[] args){    //线程工厂    MyThreadFactory factory = new MyThreadFactory("MyThreadFactory");    //新线程    Task task = new Task();

Thread thread;        System.out.println("Start the threads\n");        for(int i=0;i<10;i++){        thread=factory.newThread(task);        thread.start();            System.out.printf("Factory stats:\n"); System.out.printf("%s\n",factory.getStats());        }    }}

//顺带说下日记
Log log = LogFactory.getLog(this.getClass());log.dubug(");这个是common.logging包下面的日志打印
时间: 2024-10-10 08:45:22

用线程工厂创建线程的相关文章

Java并发学习之十——用线程工厂创建线程

本文是学习网络上的文章时的总结,感谢大家无私的分享. 1.工厂模式是最有用的设计模式.它是一个创造模式,还有他的目的是创建一个 或者几个类对象的对象.有了这个工厂,我们有这些优势集中创建对象: 更简单的改变了类的对象创建或者说创建这些对象的方式: 更简单的为了限制的资源限制了对象的创建. 更简单的生成创建对象的统计数据. 2.Java提供一个接口,ThreadFactory接口实现一个线程对象工厂 package chapter; import java.util.ArrayList; impo

管理线程之创建线程

主要的线程管理包含:1.创建线程.2.等待它结束或在后台执行. 3.向线程函数传递參数.更改线程对象全部权.4.选择线程和使用特定线程. 创建线程 线程在创建线程对象时開始执行,创建线程对象使用std::thread.像上节最后那个函数一样.最简单的情况是线程对象创建后执行一个无返回值.无參数的函数. 这个函数在线程中执行直到返回,这时线程终止. 想一下最复杂的情况,线程执行的函数可能是个函数对象.须要传递參数,执行一系列独立的操作.这些操作须要系统的一些信息,直到接收到某个信号终止. 线程执行

通过线程池创建线程

package thread; import java.util.concurrent.*; /** * @auto dh * @create 2020-03-29-0:04 */class Th0009 implements Callable<Integer>{ private int sum=0; public Integer call(){ for(int i=1;i<=100;i++){ sum+=i; } return sum; }}class Th009 implements

漫谈并发编程(二):java线程的创建与基本控制

java线程的创建 定义任务 在java中使用任务这个名词来表示一个线程控制流的代码段,用Runnable接口来标记一个任务,该接口的run方法为线程执行的代码段. public class LiftOff implements Runnable { protected int countDown = 10; private static int taskCount = 0; private final int id = taskCount++; public void run() { whil

7种创建线程方式,你知道几种?线程系列Thread(一)

前言 最近特别忙,博客就此荒芜,博主秉着哪里不熟悉就开始学习哪里的精神一直在分享着,有着扎实的基础才能写出茁壮的代码,有可能实现的逻辑有多种,但是心中必须有要有底哪个更适合,用着更好,否则则说明我们对这方面还比较薄弱,这个时候就得好好补补了,这样才能加快提升自身能力的步伐,接下来的时间会着重讲解线程方面的知识.强势分割线. 话题乱入,一到跳槽季节想必我们很多人就开始刷面试题,这种情况下大部分都能解决问题,但是这样的结果则是导致有可能企业招到并非合适的人,当然作为面试官的那些人们也懒得再去自己出一

猫猫学iOS(四十九)多线程网络之线程的创建NSThreand

猫猫分享,必须精品 原创文章,欢迎转载.转载请注明:翟乃玉的博客 地址:http://blog.csdn.net/u013357243?viewmode=contents 一:NSThread的基本使用 1:创建和启动线程 一个NSThread对象就代表一条线程 创建.启动线程 NSThread *thread = [[NSThread alloc] initWithTarget:self selector:@selector(sel) object:nil]; [thread start];

[02] 线程的创建和常用方法

1.线程的创建 线程的创建可以通过两种方式,第一种是 Thread类,第二种是 Runnable接口: 继承 Thread 类,覆盖 run() 实现 Runnable 接口,实现 run() 然后线程的启用是通过 start() 方法,它会自动调用 run() 方法,如下例: //继承Thread public class MyThread extends Thread { @Override public void run() { for(int i = 0; i < 100; i++) {

java线程API学习 线程池ThreadPoolExecutor(转)

线程池ThreadPoolExecutor继承自ExecutorService.是jdk1.5加入的新特性,将提交执行的任务在内部线程池中的可用线程中执行. 构造函数 ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, BlockingQueue<Runnable> workQueue, ThreadFactory threadFactory, Rejected

并发编程——java线程基础之线程状态转换

线程的基本概念 线程,有时被称为轻量级进程(Lightweight Process,LWP),是程序执行流的最小单元.一个标准的线程由线程ID,当前指令指针(PC),寄存器集合和堆栈组成. --百度百科 线程的转换状态 线程的创建 线程的创建有两种方法,一种是implements自Runnable接口,一种是扩展自Thread类,两者均需要实现run方法.当线程对象被new出来时,线程进入到初始状态,当线程执行了start方法时,线程进入到可运行状态(很短,很快进入到执行状态). Runnabl