标签:
1、多线程概述
当一个程序运行时,内部可能包含了多个顺序执行流,每个顺序执行流就是一个线程。主要以下几个优点:
Ø 定义Thread的子类,并重写run方法
Ø 创建Thread子类的实例,即创建了线程对象
Ø 用线程对象的start方法来启动该线程
1 public class DemoThread extends Thread 2 { 3 private int i; 4 String name; 5 public DemoThread(String name) 6 { 7 super(name); 8 } 9 public void run() 10 { 11 for(;i<100;i++) 12 System.out.println(Thread.currentThread().getName()+"-------"+i); 13 14 } 15 public static void main(String[] args) 16 { 17 for(int i=0;i<100;i++) 18 { 19 System.out.println(Thread.currentThread().getName()+"-----------"+i); 20 21 if(i==20) 22 { 23 new DemoThread("windows1").start(); 24 new DemoThread("windows2").start(); 25 } 26 } 27 } 28 }
Ø 定义Runnable接口的实现类,并重写该接口的run方法(该方法是该线程的线程执行体)
Ø 创建Runnable实现类的实例,并以此实例作为Thread的target来创建Tread对象
1 public class DemoThread implements Runnable 2 { 3 private int i; 4 public void run() 5 { 6 for(;i<100;i++) 7 System.out.println(Thread.currentThread().getName()+"-------"+i); 8 9 } 10 public static void main(String[] args) 11 { 12 for(int i=0;i<100;i++) 13 { 14 System.out.println(Thread.currentThread().getName()+"-----------"+i); 15 16 if(i==20) 17 { 18 DemoThread t=new DemoThread(); 19 new Thread(t,"Windows1").start(); 20 new Thread(t,"Windows2").start(); 21 } 22 } 23 } 24 }
两种方法比较:
synchronized (obj) { }
synchronized
方法和语句所访问的隐式监视器锁相同的一些基本行为和语义,但功能更强大。 使用Lock对象的代码格式如下:1 public class X 2 { 3 private final ReentrantLock lock=new ReentrantLock(); 4 public void m() 5 { 6 lock.lock();//加锁 7 try 8 { 9 //需要保证线程安全的代码 10 } 11 finally 12 { 13 lock.unlock();//释放锁 14 } 15 } 16 } 17
1 class TestThread implements Runnable 2 { 3 public void run() 4 { 5 for(int i=0;i<50;i++) 6 { 7 System.out.println(Thread.currentThread().getName()+"---"+i); 8 } 9 } 10 } 11 public class TestMain 12 { 13 14 public static void main(String[] args) 15 { 16 // TODO 自动生成的方法存根 17 TestThread t=new TestThread(); 18 ExecutorService pool=Executors.newFixedThreadPool(6); 19 pool.submit(new Thread(t)); 20 pool.submit(new Thread(t)); 21 pool.shutdown(); 22 } 23 24 }
标签:
原文地址:http://www.cnblogs.com/xujian2014/p/4431350.html