java多线程:3、线程互斥
2017-04-09 13:42
239 查看
多线程互斥问题在生活中随处可见,如买票、银行转账等等。。。
实例代码:
输入结果:
如果希望两个字符串都可以完整输出可以使用以下几种方法
1、使用synchronized块
2、在方法上添加synchironized关键字
要想使多线程之间互斥,多线程之间必须使用相同的监视对象
实例代码:
public class ThreadTest2 { final SysOut sysOut=new SysOut(); public static void main(String[] args) { ThreadTest2 test=new ThreadTest2(); new Thread(new Runnable(){ @Override public void run() { // TODO Auto-generated method stub while(true){ try { Thread.sleep(50); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } test.sysOut.outer("****************"); } } }).start(); new Thread(new Runnable(){ @Override public void run() { // TODO Auto-generated method stub while(true){ try { Thread.sleep(50); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } test.sysOut.outer("!!!!!!!!!!!!!!!!"); } } }).start(); } class SysOut{ public void outer(String name){ for(int i=0,n=name.length();i<n;i++){ System.out.print(name.charAt(i)); } System.out.println(); } } }
输入结果:
如果希望两个字符串都可以完整输出可以使用以下几种方法
1、使用synchronized块
class SysOut{ public void outer(String name){ synchronized(this){ for(int i=0,n=name.length();i<n;i++){ System.out.print(name.charAt(i)); } System.out.println(); } } }
2、在方法上添加synchironized关键字
public synchronized void outer(String name){ for(int i=0,n=name.length();i<n;i++){ System.out.print(name.charAt(i)); } System.out.println(); }
要想使多线程之间互斥,多线程之间必须使用相同的监视对象
相关文章推荐
- java多线程总结笔记4——线程互斥与同步
- java 多线程学习笔记之 线程互斥
- Java多线程编程--(3)线程互斥、同步的理解
- Java多线程与并发应用-(2)-线程互斥synchronized
- 【Java多线程与并发库】03 传统线程互斥技术 synchronized
- java多线程之传统线程互斥技术
- 黑马程序员——Java多线程—线程互斥—synchronized
- Java多线程与并发库高级应用-传统线程互斥技术
- 【Java多线程与并发库】3.传统线程互斥技术
- java多线程与线程并发二:线程互斥
- java中的多线程——线程创建方式、线程互斥和线程间通信
- 基于Java多线程机制的生产者-消费者模型模拟
- 简单直观-实战体会Java多线程编程的精要 (3)
- Java程序中的多线程
- Java多线程程序设计
- Java多线程编程经验谈
- Java多线程的几个重要概念
- Java多线程程序设计
- 简单直观-实战体会Java多线程编程的精要 (1)
- 简单直观-实战体会Java多线程编程的精要 (5)