zoukankan      html  css  js  c++  java
  • [并发]Java并发编程入门1

    【为什么要使用并发?】
    1. 提高程序运行速度
    当在多核或者多处理器系统上运行时,并发程序能够充分利用多个执行单元以加快速度;但是,当在单处理器上运行并发程序时,则要分两种情况:当程序中存在阻塞时(比如遇到I/O阻塞),此时并发可以提高速度。如果是耗CPU的操作并且无阻塞,则在单处理器上运行并发程序不仅不会提高速度,反而会增加程序的运行时间,因为线程之间的切换增加了系统的开销。在多处理器上运行时,虽然也有线程切换的开销,但是并发本身带来的性能提升远远高于这个开销。
    2. 简化设计
    因为在现实中,有些操作本身就是并发进行的,因此,采用并发进行程序设计,可以模拟现实中的操作,简化程序设计。

    并发在Java中最常见的例子是GUI的事件驱动编程,采用并发可以明显提高用户界面的可响应行。如果不采用并发,则程序中所有事件处理程序不得不循环检测用户输入,否则,在当前操作(有可能是非常耗时的操作)没有完成之前,用户的其他输入将得不到响应。而采用并发,利用单独线程执行响应用户的输入,则总可以保证每个事件能够得到一定程序的响应。其实这还是要依靠于操作系统的并发模型,如果采用类似Windows的时间片机制,可以保证每个线程在一定时间内都能得到执行,但是如果采用Solaris的FIFO并发模型,则相同优先级的任务将会是谁先来谁先执行完或者阻塞,然后后面的才能得到执行。

    【在Java中如何使用线程】
    两种方法:
    1. 定义一个类,实现Runnable接口,即实现run()方法以定义要在此线程执行的操作,然后使用此类的对象为参数建立一个Thread对象t,调用t.start()方法,即可执行此线程中的run()方法中定义的操作。
    2. 直接继承Thread类,重写run()方法。

     1 public class SimpleThreadTest {
     2     /**
     3      * @param args
     4      */
     5     public static void main(String[] args) {
     6         // TODO Auto-generated method stub
     7          Thread t=new Thread(new Runnable(){
     8             public void run(){
     9                 int i=0;
    10                 while(true){
    11                     System.out.println("in the thread1: "+i);
    12                     i++;
    13                     if(i==5){
    14                         break;
    15                     }
    16                 }
    17             }
    18         });
    19         t.start();
    20         for(int i=0;i<5;i++){
    21             System.out.println("in the main thread: "+i);
    22         }
    23     }
    24 }

    运行结果:

     1 in the main thread: 0
     2 in the main thread: 1
     3 in the main thread: 2
     4 in the main thread: 3
     5 in the main thread: 4
     6 in the thread1: 0
     7 in the thread1: 1
     8 in the thread1: 2
     9 in the thread1: 3
    10 in the thread1: 4

    示例代码中使用了匿名类,实际使用时,可以定义一个新类,实现Runnable接口或者直接继承Thread类,重写run()方法。

    to be continued......

  • 相关阅读:
    Oracle查看所有表空间使用情况
    Oracle版本信息查看
    Windows 7关闭和开启系统休眠
    ORACLE 创建表空间
    sp_helpdb使用
    SQL SERVER的数据类型
    博客园开通啦
    http keep alive
    android开发学习
    http与html
  • 原文地址:https://www.cnblogs.com/gaojing/p/1653027.html
Copyright © 2011-2022 走看看