package Mypackage;
//主类
public class TenThread extends Thread{
public static void main(String args[]){
final GetResult g=new GetResult();
T1Thread T1=new T1Thread(g);
T2Thread T2=new T2Thread(g);
T1.setPriority(1);
T2.setPriority(2);
T1.start();
T2.start();
g.put();
}
}//获取结果类,获取各个线程的结果,利用中间量temp传给p[]数组,并累加出结果
class GetResult{
int sum; //计算最终结果变量
int temp; //中间变量
int p[]=new int[10]; //接收结果的数组//获取各个线程结果并传递给temp
synchronized int Get(int k){
return temp=k;
}//把temp的值传给p[],并求出数组各个元素之和
synchronized void put(){
for(int i=0;i<2;i++){
p[i]=temp;
sum=sum+p[i];
}
System.out.println(sum);//输出结果
}
}//线程1,计算出1-100的值,并把结果传出去(利用GetResult类的Get()方法)
class T1Thread extends Thread implements Runnable{
int sum=0;
GetResult q;
T1Thread(GetResult q){
this.q=q;
new Thread(this,"T1Thread").start();
}
public void run(){
for(int i=1;i<=100;i++)
sum=sum+i;
q.Get(sum);
}
}//同类T1Thread
class T2Thread extends Thread implements Runnable{
int sum=0;
GetResult q;
T2Thread(GetResult q){
this.q=q;
new Thread(this,"T2Thread").start();
}
public void run(){
for(int i=101;i<=200;i++)
sum=sum+i;
q.Get(sum);
}
}
//主类
public class TenThread extends Thread{
public static void main(String args[]){
final GetResult g=new GetResult();
T1Thread T1=new T1Thread(g);
T2Thread T2=new T2Thread(g);
T1.setPriority(1);
T2.setPriority(2);
T1.start();
T2.start();
g.put();
}
}//获取结果类,获取各个线程的结果,利用中间量temp传给p[]数组,并累加出结果
class GetResult{
int sum; //计算最终结果变量
int temp; //中间变量
int p[]=new int[10]; //接收结果的数组//获取各个线程结果并传递给temp
synchronized int Get(int k){
return temp=k;
}//把temp的值传给p[],并求出数组各个元素之和
synchronized void put(){
for(int i=0;i<2;i++){
p[i]=temp;
sum=sum+p[i];
}
System.out.println(sum);//输出结果
}
}//线程1,计算出1-100的值,并把结果传出去(利用GetResult类的Get()方法)
class T1Thread extends Thread implements Runnable{
int sum=0;
GetResult q;
T1Thread(GetResult q){
this.q=q;
new Thread(this,"T1Thread").start();
}
public void run(){
for(int i=1;i<=100;i++)
sum=sum+i;
q.Get(sum);
}
}//同类T1Thread
class T2Thread extends Thread implements Runnable{
int sum=0;
GetResult q;
T2Thread(GetResult q){
this.q=q;
new Thread(this,"T2Thread").start();
}
public void run(){
for(int i=101;i<=200;i++)
sum=sum+i;
q.Get(sum);
}
}
解决方案 »
- MYEclipse怎么导出JAR
- 我是新手,请大家指导关于数据结构方面的问题,谢谢了
- 初学菜鸟,求问一使用NetBeans开发的小问题
- 一段java下载的程序参考
- j2se程序执行顺序
- 求助啊!!!!使用GridBagLayout时发现所有的组件都聚在中央.....
- 如何从一个字符串中解析出日期格式的字符串?
- 要研究Java的API,有什么好书吗?
- thinking in java中关于 copy constructor的问题
- 请问如何在JCreator2.5中运行时加参数?
- Java正则表达式...........大家帮忙看看....
- Image 和 BufferedImage 是不是与String / StringBuffer 的区别一致?
代码如下://主类
public class TenThread extends Thread {
public static void main(String args[]) {
GetResult g = new GetResult();
T1Thread T1 = new T1Thread(g,1,100);
T1Thread T2 = new T1Thread(g,101,200);
System.out.println("结果为:"+g.sum);
T1.setPriority(5);
T2.setPriority(1);
T1.start();
T2.start();
//为了结果的正确性,让主线程睡眠1秒钟
try{
Thread.sleep(1000);
}catch(InterruptedException e){
e.getStackTrace();
}
//输出最后结果
System.out.println("结果为:"+g.sum);
}
}// 计算结果的类
class GetResult {
int sum=0; // 计算最终结果变量
//计算求和
synchronized void sum(int i) {
sum=sum+i;
System.out.println(sum);// 输出结果
}
}
//创建线程的类
class T1Thread extends Thread {
GetResult q;
//index为要计算的和的起始值,end为要计算的和的结束值
int index,end; T1Thread(GetResult q,int index,int end) {
this.q = q;
this.end=end;
this.index=index;
} public void run() {
for (int i = index; i <= end; i++)
q.sum(i);
}
}