zoukankan      html  css  js  c++  java
  • 多线程篇八:线程锁

    1.线程锁Lock/ReentrantLock

    package com.test.lock;
    
    import java.util.concurrent.locks.Lock;
    import java.util.concurrent.locks.ReentrantLock;
    
    //线程锁,通常用于替换synchronized,比synchronized更加面向对象
    public class LockTest {
        static class Outputer{
            Lock locks=new ReentrantLock();
            //方法1
            public void output1(String name){
                int len=name.length();
                locks.lock();//确保完整输出chenxiaobing后再输出donyanxia
                try{
                    for(int i=0;i<len;i++){
                        System.out.print(name.charAt(i));
                    }
                    System.out.println();
                }finally{
                    locks.unlock();//避免执行的代码发送异常,导致死锁,因此需要使用finally,无论执行是否成功,都进行解锁
                }
            }
        }
        public void init(){
            final Outputer o=new Outputer();
            
            //线程1
            new Thread(new Runnable() {
                @Override
                public void run() {
                    while(true){
                        try {
                            Thread.sleep(100);
                        } catch (InterruptedException e) {
                            e.printStackTrace();
                        }
                        o.output1("chenxiaobing");
                    }
                }
            }).start();
            
            //线程2
            new Thread(new Runnable() {
                @Override
                public void run() {
                    while(true){
                        try {
                            Thread.sleep(100);
                        } catch (InterruptedException e) {
                            e.printStackTrace();
                        }
                        o.output1("donyanxia");
                    }
                }
            }).start();
        }
        public static void main(String[] args) {
            new LockTest().init();
            //交替输出chenxiaobing、donyanxia
        }
    }
    View Code
  • 相关阅读:
    Android 课程设计
    第十个作业 简易通讯录
    第九个作业 QQ的账号密码保存
    第八个作业 QQ账号的保存
    第七个作业 Activity之间的数据回传
    第六个作业 应用列表
    第五个作业 背景换色
    JSP第一次作业
    安卓课设
    Android第八次作业
  • 原文地址:https://www.cnblogs.com/brant/p/6028553.html
Copyright © 2011-2022 走看看