我是靠谱客的博主 奋斗毛衣,最近开发中收集的这篇文章主要介绍Java语言程序设计----- 多线程机制,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

Java语言程序设计–实验八 多线程机制

1.实验内容

(1)编写三个线程分别显示各自的运行时间,第一个线程每隔1秒钟运行一次,第二个线程每隔5秒钟运行一次,第三个线程每隔10秒钟运行一次。
(2)编写两个线程,一个线程向数组中存数据,一个线程向数组中取数据。练习如何实现线程的同步。
(3)银行账户的存/取款线程设计
设计3个类:账户类Account、存款线程类SaveLock、取款线程类FetchLock。账户类Accout记录储户名和金额,提供存款方法put()和取款方法get()。SaveLock和FetchLock类分别提供对指定账户的存/取款操作,在SaveLock和FetchLock类的run()方法账户声明临界区,锁定当前操作的账户对象,形成对同一个账户对象的互斥使用。

1.class test0{
public static void main(String []args){
owwa tr1=new owwa();
tr1.set(1000);
tr1.setName("第一个线程");
owwa tr2=new owwa();
tr2.set(5000);
tr2.setName("第二个线程");
owwa tr3=new owwa();
tr3.set(10000);
tr3.setName("第三个线程");
tr1.start();
tr2.start();
tr3.start();
// while(true)
System.out.print(Thread.currentThread().getName()+"n");
}
}
class owwa extends Thread{
private int t;
private int i=0;
public void set(int t) {
this.t=t;
}
public void run(){
while(true) {
try {
Thread.sleep(t);
} catch (Exception e) {
e.printStackTrace();
}
System.out.print(getName()+"运行时间为:"+(t+i)/1000+"秒n");
i=t+i;
}
}
}
2.class test0 {
public static void main(S
tring[] args) {
int [] a= {1,2,3,4,5,6,7,8,9,10};
t1 ta = new t1();
t2 tb = new t2();
ta.setName("线程1取数据");
tb.setName("线程2存数据");
t1.out(a);
t2.out(a);
ta.start();
tb.start();
a=tb.get();
}
}
class t1 extends Thread {
private static int[] a;
static void out(int[] b) {
a=b;
}
public void run() {
while(true)
{int j=(int) (Math.random()*10);
System.out.println(getName()+"取出数字"+a[j]+"n");}
}
}
class t2 extends Thread {
int i=0;
private static int[] a;
static void out(int[] b) {
a=b;
}
public void run() {
for (;i<a.length;i++) {
int j=(int) (Math.random()*100);
a[i]=j;
System.out.println(getName()+"存入数字"+j+"n");
if(i==a.length-1)
i=0;
}
}
public int[] get() {
return a;
}
}
3.public class account{
private static double save=100;
private static String name="webv";
private static double j;
public static void main(String []args) {
for(int i = 0;i<5;i++) {
SaveLock putsave=new SaveLock();
FetchLock outsave=new FetchLock();
putsave.setName("存钱线程");
outsave.setName("取钱线程");
putsave.get(name, save);
outsave.get(name, save);
putsave.start();
j=putsave.put1();
save=save+j;
System.out.println("账户:"+name+"存入"+j+"元,余额为"+save+"元n");
outsave.start();
j=outsave.put1();
if(save>=j) {
save=save-j;
System.out.println("账户:"+name+"取出"+j+"元;还剩:"+save+"n");
}
else {
System.out.println("余额不足n");
}
}
}
public void getmy(double my){
save=save+my;
}
}
class SaveLock extends Thread{
double j=(double) (Math.random()*200);
private String name;
private double save;
public void get(String name,double save) {
this.name=name;
this.save=save;
}
public void run() {
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
save=save+j;
//System.out.println(getName()+"账户:"+name+"存入"+j+"元,余额为"+save+"元n");
}
public double put1() {
return j;
}
}
class FetchLock extends Thread{
account a;
double j=(double) (Math.random()*10);
private String name;
private double save;
public void get(String name,double save) {
this.name=name;
this.save=save;
}
public void run() {
for(int i = 0;i<5;i++) {
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
if(save>=j)
{
save=(save-j);
//System.out.println(getName()+"账户:"+name+"取出"+j+"元;还剩:"+save+"n");
}
else {
//System.out.println("余额不足n");
}
}
}
public double put1() {
return j;
}
}

最后

以上就是奋斗毛衣为你收集整理的Java语言程序设计----- 多线程机制的全部内容,希望文章能够帮你解决Java语言程序设计----- 多线程机制所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(44)

评论列表共有 0 条评论

立即
投稿
返回
顶部