Welcome 微信登录
编程资源 图片资源库 蚂蚁家优选 PDF转换器

首页 / 操作系统 / Linux / Java多线程从简单到复杂

1 输出数字(1) 多线程操作全局变量任务package c;
/**
 * @author ZTX
 * (1) 多线程操作全局变量任务
 * 2013-12-14 21:49:17
 *
 *
 */
public class MyThread implements Runnable
{
    private static int i=0;
    public MyThread(){
   
    }
    @Override
    public void run(){
        i++;
     System.out.println("i="+i);
    }
}(2) 为这个任务开三个线程 private static void testImport3() {
   MyThread imp=new MyThread();
   Thread t;
     for(int i=0;i<3;i++){//开3个线程
        t=new Thread(imp);
        t.start();
      }
 }(3) 输出结果i=2
i=3
i=22 同步避免一个数字拿出来处理前被另一个线程拿出来,两个线程处理之后返回了同一种结果(本应该是两种)(1) 加锁package c;import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;/**
 * @author ZTX
 * (1) 多线程操作全局变量
 * 2013-12-14 21:49:17
 * (2) 同步
 * 2013-12-14 22:12:19
 *
 */
public class MyThread implements Runnable
{
    private static int i=0;
    public MyThread(){
   
    }
    private static Lock lock=new ReentrantLock();
    @Override
    public void run(){
 lock.lock();
        try {
   i++;
   System.out.println("i="+i);
 } catch (Exception e) {
   e.printStackTrace();
 }finally{
   lock.unlock();
 }
    }
}(2)增加线程数验证同步 private static void testImport3() {
   MyThread imp=new MyThread();
   Thread t;
     for(int i=0;i<30;i++){//开3个线程
        t=new Thread(imp);
        t.start();
      }
 }(3)输出结果i=1
i=2
i=3
i=4
i=5
i=6
i=7
i=8
i=9
i=10
i=11
i=12
i=13
i=14
i=15
i=16
i=17
i=18
i=19
i=20
i=21
i=22
i=23
i=24
i=25
i=26
i=27
i=28
i=29
i=30345Java1.5后的多线程框架 http://www.linuxidc.com/Linux/2014-02/96879.htmJava多线程和同步的理解 http://www.linuxidc.com/Linux/2013-12/93691.htmJava中两种实现多线程方式的对比分析 http://www.linuxidc.com/Linux/2013-12/93690.htmJava利用多线程计算目录数据大小 http://www.linuxidc.com/Linux/2013-09/90715.htmJava多线程向数据库写入数据 http://www.linuxidc.com/Linux/2013-09/90297.htmJava多线程经典案例 http://www.linuxidc.com/Linux/2014-06/103458.htm本文永久更新链接地址:http://www.linuxidc.com/Linux/2014-07/104435.htm