博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
多线程篇三:线程同步
阅读量:6487 次
发布时间:2019-06-24

本文共 3026 字,大约阅读时间需要 10 分钟。

 1.线程同步

package com.test.synchronizeds;//线程同步public class TraditionThreadSynchronized {    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 TraditionThreadSynchronized().init();    }        static class Outputer{                //方法1        public void output1(String name){            int len=name.length();            synchronized(this){
//钥匙必须相同 :synchronized中的的变量,必须是针对所有线程来讲都是一样的,此时才能打达到线程同步的效果. for(int i=0;i

 2.线程同步、交互

package com.test.synchronizeds;/** * 子线程循环10次,主线程循环20次,子线程循环10次,主线程循环20次,如此交替循环50次 * @author Administrator * */public class TraditionThreadCommunication {        public static void main(String[] args) {        final Bussines b=new Bussines();                //子线程        new Thread(new Runnable() {            @Override            public void run() {                for(int i=1;i<=50;i++){                    b.sub(i);                }            }        }).start();                //主线程        for(int i=1;i<=50;i++){            b.main(i);        }    }        static class Bussines{        private boolean bshouldsub=true;        public synchronized void main(int loop){            while(bshouldsub){                try {                    this.wait();                } catch (InterruptedException e) {                    // TODO Auto-generated catch block                    e.printStackTrace();                }            }            for(int i=1;i<=20;i++){                System.out.println("main thread sequece of"+i+" loop of"+loop);            }            bshouldsub = true;            this.notify();        }                public synchronized void sub(int loop){            while(!bshouldsub){                try {                    this.wait();                } catch (InterruptedException e) {                    // TODO Auto-generated catch block                    e.printStackTrace();                }            }            for(int i=1;i<=10;i++){                System.out.println("sub thread sequece of"+i+" loop of"+loop);            }            bshouldsub = false;            this.notify();        }    }}

 

转载于:https://www.cnblogs.com/brant/p/5958192.html

你可能感兴趣的文章
Bash: how to check if a process id (PID) exists
查看>>
Mirantis Fuel fundations
查看>>
启动Tomcat一闪而过——分析及解决过程
查看>>
Android intent action大全
查看>>
使用 Flash Builder 的 Apple iOS 开发过程
查看>>
RabbitMq_05_Topics
查看>>
redis.conf
查看>>
SCALA中的函数式编程
查看>>
将List<int> 转换为用逗号连接为字符串
查看>>
C/C++中extern关键字详解
查看>>
Eclipse 最有用的快捷键
查看>>
K & DN 的前世今生(微软开源命名变革)
查看>>
--@angularJS--angular与BootStrap3的应用
查看>>
Flask服务入门案例
查看>>
ReadWriteLock与ReentrantReadWriteLock
查看>>
Atitit.软件命名空间 包的命名统计 及命名表(2000个名称) 方案java package...
查看>>
新手指导:教你如何查看识别hadoop是32位还是64位
查看>>
Codeforces Round #180 (Div. 2) D. Fish Weight 贪心
查看>>
Gradle sourceCompatibility has no effect to subprojects(转)
查看>>
百度指数分析
查看>>