Java多线程编程小结+java中创建线程的的几种方式
2015-04-18 19:59
621 查看
Java多线程编程总结
java中创建线程的的几种方式
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 //每个线程都执行run方法一次
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
java中创建线程的的几种方式
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 //每个线程都执行run方法一次
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
相关文章推荐
- java多线程与并发之创建线程的几种方式
- java多线程之线程创建的几种方式
- java多线程(二)——第二种线程创建方式
- 创建线程有几种方式和Java中常用的线程池
- Java多线程中线程的两种创建方式及比较代码示例
- java多线程之-线程创建方式
- (十六)java并发编程--线程的死锁解决方案(生产者和消费者几种实现方式)
- java 多线程 停止线程几种方式
- 黑马程序员--读写字节数组,随机读写流,集合IO的思维导图,多线程部分,单例设计模式,线程和进程的概念,Java中的线程的创建方式,线程的随机性,线程的状态图,多线程操作共享数据的安全性,死锁
- Java学习之多线程--创建线程的三种方式
- [Java并发编程]-创建线程的两种方式及区别
- java中创建线程的的几种方式
- java 多线程总结(一) 创建线程的几种方法及对终止线程运行的讨论
- java创建线程的几种方式
- 【Java多线程】什么是线程与线程的生命周期与线程的创建方式
- clone的fork与pthread_create创建线程有何不同&pthread多线程编程的学习小结
- java多线程简介及线程创建方式
- Java多线程笔记一(创建运行,相关概念,JVM内存模型,线程有几种状态,死锁)
- java并发编程实践 part 01 --> 线程创建方式
- 牛客网Java刷题知识点之什么是进程、什么是线程、什么是多线程、多线程的好处和弊端、多线程的创建方式、JVM中的多线程解析、多线程运行图解