前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >《Java从入门到放弃》JavaSE入门篇(十六):多线程

《Java从入门到放弃》JavaSE入门篇(十六):多线程

作者头像
良月柒
发布2019-03-20 15:56:06
2750
发布2019-03-20 15:56:06
举报

出处:https://blog.csdn.net/u010255818/article/details/50864566

Runnable接口与Thread类

创建线程的两种方法

用户线程与守护线程

线程同步机制

public class BufferLock{ private int value = 0; private boolean isEmpty = true; public BufferLock(){ //构造方法 this.value = 0; this.isEmpty = true; } /* 成员方法,操作数据;加互斥锁 */ public synchronized void put(int value){ while(isEmpty == false){ //状态非空时:持续等待 try{ this.wait(); }catch(InterruptedException e){} } //状态空时:写入数据,先置标志位为非空,再唤醒其他进程 this.value = value; isEmpty = false; notify(); } public synchronized int get(){ while(isEmpty == true){ //状态为空时:持续等待 try{ this.wait(); }catch(InterruptedException e){} } //状态非空时:获取数值,先置标志位空,再唤醒其他进程 int temp = value; isEmpty = true; notify(); return temp; } } /*发送进程类*/ class Sender extends Thread{ private BufferLock bufferLock = null; public Sender(BufferLock bufferLock){ //构造方法 this.bufferLock = bufferLock; } public void run(){ for(int i=0 ;i<10 ;i++){ bufferLock.put(i); System.out.println("send:"+i); } } } /*接收进程类*/ class Receiver implements Runnable{ private BufferLock bufferLock = null; public Receiver(BufferLock bufferLock){ this.bufferLock = bufferLock; } public void run(){ for(int i=0 ; i<10 ; i++){ System.out.println("\t\t receive:"+bufferLock.get()); } } } /*测试类*/ class Test{ public Test(){ super(); } public static void main(String args[]){ BufferLock bufferLock = new BufferLock(); Sender sender = new Sender(bufferLock); sender.start(); Receiver receiver = new Receiver(bufferLock); new Thread(receiver).start(); } }

END

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-10-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序员的成长之路 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档