(1)스 레 드 관리11-공장 방법 으로 스 레 드 만 들 기

공장 방법 을 통 해 스 레 드 를 만들다.
공장 방법 디자인 모델 은 대상 을 대상 으로 프로 그래 밍 하 는 데 가장 자주 사용 되 는 디자인 모델 중 하나 로 공장 방법 은 생 성 유형 에 속 하 며 주로 대상 을 만 드 는 데 사용 된다.
공장 방법 으로 대상 을 만 드 는 것 은 몇 가지 가 있 습 니 다.
  • 만 든 대상 이나 대상 을 만 드 는 방법 을 쉽게 바 꿀 수 있다
  • 창설 대상 의 수량 을 제한 합 니 다
  • 이러한 생 성 대상 에 대해 데이터 통계(generate statistic data)를 쉽게 실시 할 수 있다
  • 자바 는 ThreadFactory 인 터 페 이 스 를 제공 하여 공장 방법 으로 스 레 드 를 만 드 는 데 사용 합 니 다.
    실천 하 다
    1.공장 하 나 를 실현 하 는 방법
    public class MyThreadFactory implements ThreadFactory {
    
        private AtomicInteger threadNumber = new AtomicInteger(0);
    
        // Store thread name
        private String name;
    
        // Store statistical data about the Thread object created
        private List<String> stats;
    
        private ThreadGroup group;
    
        public MyThreadFactory(String name) {
            this.name = name;
            stats = new ArrayList<>();
    
            SecurityManager s = System.getSecurityManager();
            group = (s != null) ? s.getThreadGroup() :
                    Thread.currentThread().getThreadGroup();
        }
    
        @Override
        public Thread newThread(Runnable r) {
            Thread t = new Thread(group,r, name + "-Thread_" + threadNumber.getAndIncrement());
    
            if (t.isDaemon())
                t.setDaemon(false);
            if (t.getPriority() != Thread.NORM_PRIORITY)
                t.setPriority(Thread.NORM_PRIORITY);
    
            stats.add(String.format("Created thread %d with name %s in group %s, on %s
    ", t.getId(), t.getName(),t.getThreadGroup().getName(), Utils.dateFormat(new Date()))); return t; } public String getStats() { StringBuffer buffer = new StringBuffer(); for (String stat : stats) { buffer.append(stat); buffer.append("
    "); } return buffer.toString(); } }

    2.스 레 드 퀘 스 트 구현
    public class Task implements Runnable {
        @Override
        public void run() {
            try {
                TimeUnit.SECONDS.sleep(1);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    
        public static void main(String[] args) {
            MyThreadFactory threadFactory = new MyThreadFactory("MyThreadFactory");
            Task task=new Task();
            Thread thread;
            System.out.printf("Starting the Threads
    "); for (int i=0; i<10; i++){ thread=threadFactory.newThread(task); thread.start(); } System.out.printf("Factory stats:
    "); System.out.printf("%s
    ",threadFactory.getStats()); } }

    stats 에 이 대상 을 만 드 는 정 보 를 저장 하여 통계 결과 로 사용 할 수 있 습 니 다.
    요점
    ThreadFactory 인 터 페 이 스 는 new Thread 방법 을 제공 합 니 다.이 방법 에서 만 든 스 레 드 에 대해 우 리 는 더 많은 통 제 를 추가 할 수 있 습 니 다.공장 방법 과 정태 공장 방법 은 다 르 고 구체 적 으로 구별 한 후에 기록한다.

    좋은 웹페이지 즐겨찾기