教程集 www.jiaochengji.com
教程集 >  脚本编程  >  java  >  正文 java创建线程的方法汇总

java创建线程的方法汇总

发布时间:2016-10-10   编辑:jiaochengji.com
教程集为您提供java创建线程的方法汇总等资源,欢迎您收藏本站,我们将为您提供最新的java创建线程的方法汇总资源
线程可是java中的一个重中之重了我们可以利用线程来实现多的事情,今天我们来看一篇关于java创建线程的方法,具体的我们就一起来看看小编整理的java创建线程总结吧。


1.继承Thread

Java

public class java_thread extends Thread{
 public static void main(String args[])
 {
  (new java_thread()).run();
  System.out.println("main thread run ");
 }
 public synchronized  void run()
 {
  System.out.println("sub thread run ");
 }

}

2.实现Runnable接口

Java

public class java_thread implements Runnable{
 public static void main(String args[])
 {
  (new Thread(new java_thread())).start();
  System.out.println("main thread run ");
 }
 public void run()
 {
  System.out.println("sub thread run ");
 }

}


3.直接在函数体使用


void java_thread()
{
 
     Thread t = new Thread(new Runnable(){
            public void run(){
            mSoundPoolMap.put(index, mSoundPool.load(filePath, index));
            getThis().LoadMediaComplete();
            }});
  t.start();
}
 


1,继承自Thread类,代码逻辑写在子线程中,需要重写run()方法,主线程里start()就可以了

package com.myjava.thread;

public class ExtendsThread extends Thread{
    private final static int THREAD_NUM = 5;
   
    public static void main(String[] args){
        for (int i = 0; i <THREAD_NUM; i ) {
            new ExtendsThread("thread" i).start();
        }
    }   
    public  ExtendsThread(String name){
        super(name);
    }
    @Override
    public void run() {
        // TODO Auto-generated method stub
        for (int i = 0; i < this.THREAD_NUM; i ) {
            System.out.println(this.getName() i);
        }
    }
}

运行结果:

thread00
thread01
thread02
thread03
thread04
thread20
thread21
thread22
thread23
thread24
thread40
thread41
thread42
thread43
thread44
thread10
thread11
thread12
thread13
thread14
thread30
thread31
thread32
thread33
thread34

2,实现Runnable接口

package com.myjava.thread;

 

public class ImplRunnable implements Runnable {
    private static final int THREAD_NUM = 5;
    @Override
    public void run() {
        for (int i = 0; i < THREAD_NUM; i ) {
            System.out.println(Thread.currentThread().getName() i);
        }
    }
   
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        for (int j = 0; j < THREAD_NUM; j ) {
            ImplRunnable  implRunnable= new ImplRunnable();
            new Thread(implRunnable,"thread" j).start();
        }
    }
}

运行结果

thread10
thread11
thread12
thread13
thread14
thread30
thread31
thread32
thread33
thread34
thread00
thread01
thread02
thread03
thread04
thread20
thread21
thread22
thread23
thread24
thread40
thread41
thread42
thread43
thread44

3,通过线程池

package com.myjava.thread;

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

public class ThreadPool {
    private  static int POOL_NUM = 10;
    public static void main(String[] agrs){
        ExecutorService executorService = Executors.newFixedThreadPool(5);
        for (int i = 0; i < POOL_NUM; i ) {
            RunnableThread thread = new RunnableThread();
            executorService.execute(thread);
        }
    }
}
class RunnableThread implements  Runnable{
    private   int THREAD_NUM = 10;
    public void run() {
        for (int i = 0; i <THREAD_NUM; i ) {
            System.out.println("线程" Thread.currentThread() i);
        }
       
    }
}

-----

线程Thread[pool-1-thread-2,5,main]0
线程Thread[pool-1-thread-2,5,main]1
线程Thread[pool-1-thread-2,5,main]2
线程Thread[pool-1-thread-2,5,main]3
线程Thread[pool-1-thread-2,5,main]4
线程Thread[pool-1-thread-2,5,main]5
线程Thread[pool-1-thread-2,5,main]6
线程Thread[pool-1-thread-2,5,main]7
线程Thread[pool-1-thread-2,5,main]8
线程Thread[pool-1-thread-2,5,main]9
线程Thread[pool-1-thread-4,5,main]0
线程Thread[pool-1-thread-4,5,main]1
线程Thread[pool-1-thread-4,5,main]2
线程Thread[pool-1-thread-4,5,main]3
线程Thread[pool-1-thread-4,5,main]4
线程Thread[pool-1-thread-4,5,main]5
线程Thread[pool-1-thread-4,5,main]6
线程Thread[pool-1-thread-4,5,main]7
线程Thread[pool-1-thread-4,5,main]8
线程Thread[pool-1-thread-4,5,main]9
线程Thread[pool-1-thread-4,5,main]0
线程Thread[pool-1-thread-4,5,main]1
线程Thread[pool-1-thread-4,5,main]2
线程Thread[pool-1-thread-4,5,main]3
线程Thread[pool-1-thread-4,5,main]4
线程Thread[pool-1-thread-4,5,main]5
线程Thread[pool-1-thread-4,5,main]6
线程Thread[pool-1-thread-4,5,main]7
线程Thread[pool-1-thread-4,5,main]8
线程Thread[pool-1-thread-4,5,main]9
线程Thread[pool-1-thread-1,5,main]0
线程Thread[pool-1-thread-1,5,main]1
线程Thread[pool-1-thread-1,5,main]2
线程Thread[pool-1-thread-1,5,main]3
线程Thread[pool-1-thread-1,5,main]4
线程Thread[pool-1-thread-1,5,main]5
线程Thread[pool-1-thread-1,5,main]6
线程Thread[pool-1-thread-1,5,main]7
线程Thread[pool-1-thread-1,5,main]8
线程Thread[pool-1-thread-1,5,main]9
线程Thread[pool-1-thread-5,5,main]0
线程Thread[pool-1-thread-5,5,main]1
线程Thread[pool-1-thread-5,5,main]2
线程Thread[pool-1-thread-5,5,main]3
线程Thread[pool-1-thread-5,5,main]4
线程Thread[pool-1-thread-5,5,main]5
线程Thread[pool-1-thread-5,5,main]6
线程Thread[pool-1-thread-5,5,main]7
线程Thread[pool-1-thread-5,5,main]8
线程Thread[pool-1-thread-5,5,main]9
线程Thread[pool-1-thread-3,5,main]0
线程Thread[pool-1-thread-3,5,main]1
线程Thread[pool-1-thread-3,5,main]2
线程Thread[pool-1-thread-3,5,main]3
线程Thread[pool-1-thread-3,5,main]4
线程Thread[pool-1-thread-3,5,main]5
线程Thread[pool-1-thread-3,5,main]6
线程Thread[pool-1-thread-3,5,main]7
线程Thread[pool-1-thread-3,5,main]8
线程Thread[pool-1-thread-3,5,main]9
线程Thread[pool-1-thread-2,5,main]0
线程Thread[pool-1-thread-2,5,main]1
线程Thread[pool-1-thread-2,5,main]2
线程Thread[pool-1-thread-2,5,main]3
线程Thread[pool-1-thread-2,5,main]4
线程Thread[pool-1-thread-2,5,main]5
线程Thread[pool-1-thread-2,5,main]6
线程Thread[pool-1-thread-2,5,main]7
线程Thread[pool-1-thread-2,5,main]8
线程Thread[pool-1-thread-2,5,main]9
线程Thread[pool-1-thread-2,5,main]0
线程Thread[pool-1-thread-2,5,main]1
线程Thread[pool-1-thread-2,5,main]2
线程Thread[pool-1-thread-2,5,main]3
线程Thread[pool-1-thread-2,5,main]4
线程Thread[pool-1-thread-2,5,main]5
线程Thread[pool-1-thread-2,5,main]6
线程Thread[pool-1-thread-2,5,main]7
线程Thread[pool-1-thread-2,5,main]8
线程Thread[pool-1-thread-2,5,main]9
线程Thread[pool-1-thread-2,5,main]0
线程Thread[pool-1-thread-2,5,main]1
线程Thread[pool-1-thread-2,5,main]2
线程Thread[pool-1-thread-2,5,main]3
线程Thread[pool-1-thread-2,5,main]4
线程Thread[pool-1-thread-2,5,main]5
线程Thread[pool-1-thread-2,5,main]6
线程Thread[pool-1-thread-2,5,main]7
线程Thread[pool-1-thread-2,5,main]8
线程Thread[pool-1-thread-2,5,main]9
线程Thread[pool-1-thread-2,5,main]0
线程Thread[pool-1-thread-2,5,main]1
线程Thread[pool-1-thread-2,5,main]2
线程Thread[pool-1-thread-2,5,main]3
线程Thread[pool-1-thread-2,5,main]4
线程Thread[pool-1-thread-2,5,main]5
线程Thread[pool-1-thread-2,5,main]6
线程Thread[pool-1-thread-2,5,main]7
线程Thread[pool-1-thread-2,5,main]8
线程Thread[pool-1-thread-2,5,main]9

4.比较:

实现Runnable接口优势:

1)适合多个相同的程序代码的线程去处理同一个资源

2)可以避免java中的单继承的限制

3)增加程序的健壮性,代码可以被多个线程共享,代码和数据独立。

继承Thread类优势:

1)可以将线程类抽象出来,当需要使用抽象工厂模式设计时。

2)多线程同步

在函数体使用优势

1)无需继承thread或者实现Runnable,缩小作用域。

您可能感兴趣的文章:
java创建线程的方法汇总
Java多线程原理及ThreadLocal多线程实例详解
学习J2SE过程中的30个基本概念
多线程程序设计 (转)
经典Java线程面试题70道
Java入门笔记6_线程
浅析ObjectC的GCD(Grand Central Dispatch)机制
超详细的Java多线程教程
详解Java的String/StringBuffer/StringBuilder异同
零基础Python学习路线图,Python初学者必须要了解,让你少走弯路

[关闭]
~ ~