1、Java创建多线程的方法一:(1)实现Runnable接口并实现其中的run()方法;(2)将Runable对象提交给一个Thread构造器,调用start()方法。

【程序实例】单线程

 public class LiftOff implements Runnable {

     protected int countDown = 10;

     private static int taskCount = 0;

     private final int id = taskCount++;

     public LiftOff() {
} public LiftOff(int countDown) {
this.countDown = countDown;
} public String status() {
return "#" + id + "(" + (countDown > 0 ? countDown : "LiftOff!") + "),";
} @Override
public void run() {
while (countDown-- > 0) {
System.out.print(status());
Thread.yield();
}
} }
 public class Main {

     public static void main(String[] args){
Thread thread = new Thread(new LiftOff());
thread.start();
System.out.println("Waiting for LiftOff");
} }

【运行结果】

aaarticlea/png;base64,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" alt="" />

【结果分析】

主函数中,主线程(main线程)只创建了一个线程,可以看到输出结果是有序的、可控。此外,可以看出main线程并不会等待创建的线程。

【程序实例2】多线程

 public class Main {

     public static void main(String[] args) {
for (int i = 0; i < 5; i++)
new Thread(new LiftOff()).start();
System.out.println("Waiting for LiftOff");
} }

【运行结果】

aaarticlea/png;base64,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" alt="" />

【结果分析】

此时主线程main线程创建并执行了5个线程,各个线程间是独立运行,输出的结果不可控。

2、执行器Executor

Java SE5的java.util.concurrent包中的执行器(Executor)将为你管理Thread对象,从而简化了并发编程。Executor 在客户端和执行任务之间提供了一个间接层,Executor代替客户端执行任务。Executor允许你管理异步任务的执行,而无须显式地管理线程的生命周期。Executor在Java SE5/6中时启动任务的优选方法。Executor引入了一些功能类来管理和使用线程Thread,其中包括线程池,Executor,Executors,ExecutorService,CompletionService,Future,Callable等。

【程序实例3】不固定大小线程池

 public class Main {

     public static void main(String[] args) {
ExecutorService exec = Executors.newCachedThreadPool();
for(int i=0;i<5;i++)
exec.execute(new LiftOff());
exec.shutdown();
} }

【程序实例4】固定大小线程池

 public class Main {

     public static void main(String[] args) {
ExecutorService exec = Executors.newFixedThreadPool(5);
for (int i = 0; i < 5; i++)
exec.execute(new LiftOff());
exec.shutdown();
} }

【程序分析】

实例3中,会根据实际的需要(5个线程)在线程池中创建相应数目的线程;实例4中,在一开始就固定了线程池的大小(5个),如果线程池中的线程的数目小于需求,则需要等待其它线程执行完后,复用线程,如实例5所示。

【程序实例5】

 public class Main {

     public static void main(String[] args) {
ExecutorService exec = Executors.newFixedThreadPool(3);
for (int i = 0; i < 5; i++)
exec.execute(new LiftOff());
exec.shutdown();
} }

【运行结果】

 #1(9),#0(9),#2(9),#0(8),#2(8),#1(8),#2(7),#0(7),#0(6),#0(5),#0(4),#1(7),#2(6),#0(3),#2(5),#1(6),#1(5),#1(4),#2(4),#2(3),#0(2),#2(2),#2(1),#1(3),#1(2),#1(1),#2(LiftOff!),#0(1),#0(LiftOff!),#3(9),#3(8),#1(LiftOff!),#3(7),#3(6),#4(9),#4(8),#4(7),#3(5),#4(6),#4(5),#4(4),#3(4),#3(3),#3(2),#4(3),#4(2),#3(1),#3(LiftOff!),#4(1),#4(LiftOff!),

【结果分析】

可以看出,最新运行的有3个线程(#0,#1,#2),只有当3个线程都运行完毕之后,才开始运行线程#3和#4。

【程序实例6】单线程

 public class Main {

     public static void main(String[] args) {
ExecutorService exec = Executors.newSingleThreadExecutor();
for (int i = 0; i < 5; i++)
exec.execute(new LiftOff());
exec.shutdown();
} }

【运行结果】

#0(9),#0(8),#0(7),#0(6),#0(5),#0(4),#0(3),#0(2),#0(1),#0(LiftOff!),#1(9),#1(8),#1(7),#1(6),#1(5),#1(4),#1(3),#1(2),#1(1),#1(LiftOff!),#2(9),#2(8),#2(7),#2(6),#2(5),#2(4),#2(3),#2(2),#2(1),#2(LiftOff!),#3(9),#3(8),#3(7),#3(6),#3(5),#3(4),#3(3),#3(2),#3(1),#3(LiftOff!),#4(9),#4(8),#4(7),#4(6),#4(5),#4(4),#4(3),#4(2),#4(1),#4(LiftOff!),

【结果分析】

此时,任务只能排队,顺序执行。

Java多线程编程(一)的更多相关文章

  1. Java多线程编程核心技术---学习分享

    继承Thread类实现多线程 public class MyThread extends Thread { @Override public void run() { super.run(); Sys ...

  2. Java多线程编程核心技术---对象及变量的并发访问(二)

    数据类型String的常量池特性 在JVM中具有String常量池缓存的功能. public class Service { public static void print(String str){ ...

  3. Java多线程编程——进阶篇二

    一.线程的交互 a.线程交互的基础知识 线程交互知识点需要从java.lang.Object的类的三个方法来学习:    void notify()           唤醒在此对象监视器上等待的单个 ...

  4. Java多线程编程详解

    转自:http://programming.iteye.com/blog/158568 线程的同步 由于同一进程的多个线程共享同一片存储空间,在带来方便的同时,也带来了访问冲突这个严重的问题.Ja ...

  5. 【Todo】【读书笔记】Java多线程编程指南-设计模式篇

    下了这本书<Java多线程编程指南-设计模式篇>, 还有另一本<JAVA多线程设计模式>,据说内容有重复,结合着看.

  6. Java多线程编程总结(学习博客)

    Java多线程编程总结:网址:http://lavasoft.blog.51cto.com/62575/27069/

  7. Java多线程编程的常见陷阱(转)

    Java多线程编程的常见陷阱 2009-06-16 13:48 killme2008 blogjava 字号:T | T 本文介绍了Java多线程编程中的常见陷阱,如在构造函数中启动线程,不完全的同步 ...

  8. Java多线程编程(二)

    在 Java多线程编程(一) 中的多线程并没有返回值,本文将介绍带返回值的多线程. 要想有返回值,则需要实现新的接口Callable而不再是Runnable接口,实现的方法也改为call()方法,执行 ...

  9. Java多线程编程总结(精华)

    Java多线程编程总结 2007-05-17 11:21:59 标签:多线程 java 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http ...

  10. Java多线程编程中Future模式的详解

    Java多线程编程中,常用的多线程设计模式包括:Future模式.Master-Worker模式.Guarded Suspeionsion模式.不变模式和生产者-消费者模式等.这篇文章主要讲述Futu ...

随机推荐

  1. codevs2618核电站问题

    /* 因为m为连续放的个数 所以状态要包括这个条件 定义状态:f[n][m]表示第n个坑连续放了m个 转移:分两种 1. 第x个坑 放 即m>=1 则 f[x][k]=f[x-1][k-1] 2 ...

  2. Windows Azure上的Odoo(OpenERP)-1.创建Ubuntu虚拟机,安装PostgreSQL 数据库

    前提是您必须拥有Windows Azure的账号,如果没有的话,可以去Windows Azure 中国区网站申请免费试用账号.哈哈,我就是第一批申请的试用账号,感觉自己挺幸运的.申请的过程就不写了,请 ...

  3. C# WebService 基础实例

    1.整个Demo结构:如下图: 2.新建项目--选择asp.net web服务应用程序TestWebService 3.重新命名Service1.asmx为MyService.asmx 4.右键MyS ...

  4. amCharts 破解

    官网下载 http://www.amcharts.com 然后找到amcharts.js , 打开搜索关键字 “utm_source=swf&utm_medium=demo&utm_c ...

  5. Oracle oerr使用

    [oracle@cuug ~]$ oerr ora 01555 01555, 00000, "snapshot too old: rollback segment number %s wit ...

  6. CSS注释代码

    就像在Html的注释一样,在CSS中也有注释语句:用/*注释语句*/来标明(Html中使用<!--注释语句-->).就像下面代码: 示例: <!DOCTYPE HTML> &l ...

  7. 完全用 GNU/Linux 工作(转)

    转自:http://www.chinaunix.net/old_jh/4/16102.html 看到一半,实在太长,但已觉得很好,转来分享一下. 完全用 GNU/Linux 工作 - 摈弃 Windo ...

  8. 转:Python 与 Excel 不得不说的事

    数据处理是 Python 的一大应用场景,而 Excel 则是最流行的数据处理软件.因此用 Python 进行数据相关的工作时,难免要和 Excel 打交道. 如果仅仅是要以表单形式保存数据,可以借助 ...

  9. python学习第十六天 --继承进阶篇

    这一章节主要讲解面向对象高级编程->继承进阶篇,包括类多继承介绍和继承经典类和新式类属性的查找顺序不同之处. 多继承 上一章节我们讲到继承,子类继承父类,可以拥有父类的属性和方法,也可以进行扩展 ...

  10. jquery获取浏览器的高度和宽度

    <script type="text/javascript"> $(document).ready(function() { alert($(window).heigh ...