1.线程同步

package com.test.synchronizeds;//线程同步
public class TraditionThreadSynchronized {public void init(){final Outputer o=new Outputer();//线程1new Thread(new Runnable() {@Overridepublic void run() {while(true){try {Thread.sleep(100);} catch (InterruptedException e) {e.printStackTrace();}o.output1("chenxiaobing");}}}).start();//线程2new Thread(new Runnable() {@Overridepublic 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{//方法1public void output1(String name){int len=name.length();synchronized(this){//钥匙必须相同 :synchronized中的的变量,必须是针对所有线程来讲都是一样的,此时才能打达到线程同步的效果.for(int i=0;i<len;i++){System.out.print(name.charAt(i));}System.out.println();}}//方法2 output2上的synchronized检测的对象是当前这个对象,因此如果线程1调用output1,线程2调用output2也能同步public synchronized void output2(String name){int len=name.length();for(int i=0;i<len;i++){System.out.print(name.charAt(i));}System.out.println();}//方法3 output3与output1是不会线程同步的,但是如果将output1中的this改为Outputer.class,则两者检查的都是当前类的字节码,会达到同步效果public static synchronized void output3(String name){int len=name.length();for(int i=0;i<len;i++){System.out.print(name.charAt(i));}System.out.println();}}
}

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() {@Overridepublic 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

多线程篇三:线程同步相关推荐

  1. 秒杀多线程第六篇 经典线程同步 事件Event

    阅读本篇之前推荐阅读以下姊妹篇: <秒杀多线程第四篇 一个经典的多线程同步问题> <秒杀多线程第五篇 经典线程同步关键段CS> 上一篇中使用关键段来解决经典的多线程同步互斥问题 ...

  2. 秒杀多线程第八篇 经典线程同步 信号量Semaphore

    阅读本篇之前推荐阅读以下姊妹篇: <秒杀多线程第四篇一个经典的多线程同步问题> <秒杀多线程第五篇经典线程同步关键段CS> <秒杀多线程第六篇经典线程同步事件Event& ...

  3. 秒杀多线程第九篇 经典线程同步总结 关键段 事件 互斥量 信号量

    前面<秒杀多线程第四篇一个经典的多线程同步问题>提出了一个经典的多线程同步互斥问题,这个问题包括了主线程与子线程的同步,子线程间的互斥,是一道非常经典的多线程同步互斥问题范例,后面分别用了 ...

  4. 秒杀多线程第七篇 经典线程同步 互斥量Mutex

    阅读本篇之前推荐阅读以下姊妹篇: <秒杀多线程第四篇一个经典的多线程同步问题> <秒杀多线程第五篇经典线程同步关键段CS> <秒杀多线程第六篇经典线程同步事件Event& ...

  5. 秒杀多线程第五篇 经典线程同步 关键段CS

    上一篇<秒杀多线程第四篇 一个经典的多线程同步问题>提出了一个经典的多线程同步互斥问题,本篇将用关键段CRITICAL_SECTION来尝试解决这个问题. 本文首先介绍下如何使用关键段,然 ...

  6. Android SQLite多线程读写和线程同步源码分析

    没啥诀窍,只需保证几个线程都是用的一个SQLiteDataBase对象就行了. 如果我们非要在不同线程中用两个或更多的SQLiteDataBase对象呢,当然这些SQLiteDataBase对象所操作 ...

  7. 多线程:C#线程同步lock,Monitor,Mutex,同步事件和等待句柄(上)

    多线程:C#线程同步lock,Monitor,Mutex,同步事件和等待句柄(上) 转自 http://www.cnblogs.com/freshman0216/archive/2008/07/27/ ...

  8. 细说C#多线程那些事 - 线程同步和多线程优先级

    上个文章分享了一些多线程的一些基础的知识,今天我们继续学习. 一.Task类 上次我们说了线程池,线程池的QueueUserWorkItem()方法发起一次异步的线程执行很简单 但是该方法最大的问题是 ...

  9. Win32多线程编程(3) — 线程同步与通信

    一.线程间数据通信 系统从进程的地址空间中分配内存给线程栈使用.新线程与创建它的线程在相同的进程上下文中运行.因此,新线程可以访问进程内核对象的所有句柄.进程中的所有内存以及同一个进程中其他所有线程的 ...

最新文章

  1. ubuntu系统php环境变量设置,Ubuntu系统环境变量详解
  2. mysql隔离级别 举例_mysql的事务隔离级别举例
  3. php 复制文件夹并压缩到最小_php与语音识别功能如何对接
  4. 数仓dw怎么建_搭建数据仓库的流程简介
  5. 关于ASP.NET MVC
  6. 巴克莱对冲_“巴克莱的财政预算案”:使金钱管理对心理健康有效—用户体验案例研究
  7. 如何用代码对repeating section控件新增Item(InfoPath)
  8. Sublime Text 3 汉化小技巧
  9. zabbix监控SNMP
  10. 扩展方法:给 IEnumerableTSource 扩展一个自定义数据源绑定的方法
  11. 戴尔服务器调节风扇转速
  12. 视频教程-【国内首套H3C V7交换机实战课程-1】Comware V7使用、维护与管理-H3C认证
  13. 魔兽世界服务器维护掉线,《魔兽世界怀旧服》老是掉线怎么办 老是掉线解决办法...
  14. php钓鱼怎么使用方法,盘钩使用方法
  15. 低客单价的商品怎样做运营、怎么样做优化、以及怎样做推广
  16. wxWidgets GUI 编程介绍
  17. Java获取打印机列表
  18. Appium爬虫小案例
  19. 在线计算机手册,1. 计算机应用基础学习手册.pdf
  20. nii数据的各种处理详解

热门文章

  1. eclipse和maven
  2. 利用反射打印对象一般成员属性值
  3. Qt widgets deeps--烧鸡
  4. Management reporter 2012 与AX 2012
  5. initrd的使用及说明
  6. 键盘上每个键作用!!! (史上最全的)­
  7. android真实项目教程(二)——漫画App初构_by_CJJ
  8. jQuery Mobile入门必看
  9. 使用javac编译时碰到的问题
  10. linux下c语言获取系统时间