java 25

一.学习内容
多线程
练习代码
(1)

package Demo01;
//消费者代码
public class Consumer  extends Thread {
	private Shares Shares;
	private int number;
	public Consumer(Shares c,int number) {
		Shares =c;
		this.number=number;
}
	@Override
	public void run() {
		int value=0;
		for (int i=0;i<10;i++) {
			value = Shares.get();
			System.out.println("Consumer number"+this.number+"got:"+value);
			try {
				sleep(500);
			}catch(InterruptedException e) {
				e.printStackTrace();
			}
		}
	}
}

(2)

package Demo01;
//生产者代码
public class Producer  extends Thread{
		private Shares Shares;
		private int number;
		public Producer(Shares c,int number) {
			Shares=c;
			this.number=number;
}
		@Override
		public void run() {
			for(int i=0;i<10;i++) {
					Shares.put(i);
				System.out.println("produner number"+this.number+"put:"+i);
				try {
					sleep(500);
				}catch(InterruptedException e) {
					e.printStackTrace();
				}
			}
		}


}

(3)

package Demo01;
//主代码
public class ProducerConsumer {
public static void main(String[] args) {
	Shares c =new Shares();
	Producer p0=new Producer(c,1);
	Consumer c0=new Consumer(c,1);
	p0.start();
	c0.start();
}
}

(4)

package Demo01;
//共享资源代码
public class Shares {
	private int sep;
	private boolean available=false;//数据是否可用
	public synchronized void put(int value) {
		while (available==true){//数据没有被取出
	
		try {
			wait();
		}catch(InterruptedException e) {
			e.printStackTrace();
		}
		}

 sep=value;
 available=true;
	notify();
	}
	public synchronized int get()  {
		while (available==true) {//数据没有被取出	
		try {
			wait();
		}catch(InterruptedException e) {
			e.printStackTrace();
		}	
		
	} available=false;
	  notify();
		return sep;	
}
}


(5)简易时钟

package Demo01;

import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.Graphics;
import java.util.*;
import java.util.Date;

import javax.swing.JFrame;

public class Time extends JFrame implements Runnable {
	Thread clock;
	public Time() {
		super("Clock-CN");
		this.setFont(new Font("Times New Roman",Font.BOLD,60));
		this.go();
		this.setSize(280,100);
		this.setVisible(true);
	}
	
	public  void go() {
		if(clock==null ) {
			clock=new Thread(this);
			clock.start();
		}
		
	}

	@Override
	public void run() {
		while(true) {
			repaint();
			try {
				Thread.sleep(1000);
			}catch(InterruptedException e) {
				e.printStackTrace();
			}	
		}
		
	}

	public void stop() {
		clock=null;
		
	}
	public void paint (Graphics g) {
		String s="";
		Date now=new Date();
		int hour =now.getHours();
		int  minute =now.getMinutes();
		int second =now.getSeconds();
		s=hour+":"+minute+":"+second;
		g.setColor(Color.white);
		Dimension dim=getSize();
		g.fillRect(0, 0, dim.width,dim.height);
		g.setColor(Color.blue);
		g.drawString(s,20, 80);
	}
	public static void main(String[] args) {
		Time that=new Time();
		that.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	}
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值