java线程入门知识

为什么需要多线程?

 

. 模型的简化,如某些程序是由多个相对独立任务的运行:

. 图形界面的出现,输入、输出的阻塞

. 多核CPU的更好利用

. 异步行为的需要

 

Java多线程的特性:

. 程序的入口main本身是一个线程

. 线程是并发的,无序执行的

. 线程内部是顺序执行的

. 共享数据

 

Java多线程的风险:

. 安全风险:由于线程的操作顺序是不确定的,某些在单线程下能运行的程序到多线程下会出现意外的结果。

. 性能风险:服务器的吞吐量、响应性、资源消耗

 

Java多线程API:

Java可以通过两种形式创建线程:一、实现Runnable接口,二、继承Thread类。

 

继承thread创建线程示例代码  收藏代码
  1. public class ThreadTest extends Thread {  
  2.   
  3.     public static void main(String[] args) {  
  4.         ThreadTest thread = new ThreadTest();  
  5.         thread.start();  
  6.         for (int i=0; i<10; i++) {  
  7.             System.out.println("main:"+i);  
  8.         }  
  9.     }  
  10.   
  11.     @Override  
  12.     public void run() {  
  13.         for (int i=0; i<10; i++) {  
  14.             System.out.println("thread:"+i);  
  15.         }  
  16.     }  
  17.   
  18. }  

 

实现runnable创建线程代码  收藏代码
  1. package com.openrdp.thread.api;  
  2.   
  3. public class RunnableTest implements Runnable {  
  4.   
  5.     public static void main(String[] args) {  
  6.         RunnableTest runnable = new RunnableTest();  
  7.         Thread thread = new Thread(runnable);  
  8.         thread.start();  
  9.         for (int i=0; i<10; i++) {  
  10.             System.out.println("main:"+i);  
  11.         }  
  12.     }  
  13.   
  14.     @Override  
  15.     public void run() {  
  16.         for (int i=0; i<10; i++) {  
  17.             System.out.println("thread:"+i);  
  18.         }  
  19.     }  
  20.   
  21. }  

 

 

Java线程池技术:

Executors获取exceuctorservice线程池代码  收藏代码
  1. package com.openrdp.thread.api;  
  2.   
  3. import java.util.concurrent.ExecutorService;  
  4. import java.util.concurrent.Executors;  
  5.   
  6. public class TreadPoolTest {  
  7.     public static void main(String[] args) {  
  8.         ExecutorService threadPool = Executors.newFixedThreadPool(99);  
  9.         TaskThread thread1 = new TaskThread("t1");  
  10.         threadPool.execute(thread1);  
  11.         TaskThread thread2 = new TaskThread("t2");  
  12.         threadPool.execute(thread2);  
  13.           
  14.     }  
  15.       
  16.     static class TaskThread implements Runnable {  
  17.         String param;  
  18.         public TaskThread(String param) {  
  19.             this.param = param;  
  20.         }  
  21.   
  22.         @Override  
  23.         public void run() {  
  24.               
  25.         }  
  26.     }  
  27. }  
posted @ 2013-12-28 19:18  jover2013  阅读(293)  评论(0编辑  收藏  举报