线程问题-一个线程怎么调用另一个线程的结果(2)

 1 public class Job1{
 2     public static void main(String[] args){
 3         //ThreadClass t=new ThreadClass();
 4         //RunnableClass r=new RunnableClass();
 5         Sums s=new Sums();
 6         ThreadClass t1=new ThreadClass(s);
 7         //Thread t1=new Thread(new ThreadClass(s));
 8         Thread r1=new Thread(new RunnableClass(s));
 9         r1.setDaemon(true);
10         t1.start();
11         r1.start();
12     }
13 }
14 class Sums{
15     public int sum;
16     public void calculate(){
17         for(int i=1;i<100;i++){
18             try{Thread.sleep(100);
19             sum+=i*i;}catch(Exception e){
20                 System.out.println(e);
21             }
22         }
23     }
24     public int getSum(){
25         return sum;
26     }
27 }
28 class ThreadClass extends Thread{
29     private Sums s;
30     public ThreadClass(Sums s){
31         this.s=s;
32     }
33     public void run(){
34         s.calculate();
35     }
36 }
37 class RunnableClass implements Runnable{
38     private Sums s;
39     public RunnableClass (Sums s){
40         this.s=s;
41     }
42     public void run(){
43     for(int i=0;i<100;i++){
44         try{Thread.sleep(300);
45         System.out.println(s.getSum());}catch(Exception e){
46             System.out.println(e);
47         }
48     }
49     }
50 }

这个例子说明线程是可以传递资源的(资源是一个类实例),这样就可以在线程中调用这个实例的方法。希望大家多提提建议!谢谢撒!

时间: 2024-08-04 02:45:35

线程问题-一个线程怎么调用另一个线程的结果(2)的相关文章

android开发中一个activity如何调用另一个xml中的控件

有时候,我们需要在一个Activity中调用另一个xml布局文件,即非本Activity所绑定的xml布局文件中的控件,这时候就不能直接findViewById,不然会报错指向空对象,这时就需要像下面这样做. LayoutInflater factory = LayoutInflater.from(当前类.this); View layout = factory.inflate(R.layout.你要获取的另一个XML, null); TextView textview = (TextView)

Android 一个应用程序调用另一个应用程序

实现行业应用调用我们可以Get到哪些技能? * Activity的singleTask的启动模式 * 界面跳转的基本实现 * 前台Service的基本介绍和实现 * SharedPreference的简单用法 实现行业应用调用的目的 在XHL应用程序中去调用MPos应用程序,借助MPos的一些界面完成特殊的功能. 实现行业应用调用步骤 (1)创建名为XHL的应用程序 (2)创建名为MPos的应用程序 代码讲解 1.创建名为XHL的应用程序的界面 如下是XHL的主界面 public class M

qt进程编程的使用:一个程序中调用另一个程序

在QT编程中有时候需要调用一个已经写好的程序来处理正在编写的程序中的数据,这个时候就 需要用到进程来调用那个已经写好的程序. 事先编写好一个layout程序: #include<QApplication> #include<QPushButton> #include<QGridLayout> #include<QLabel> #include<QLineEdit> #include<QMainWindow> int main(int

一个设计项调用另一个设计项的(列表界面支持多选)

//详细说明 例如:[方案管理]设计项上有一个[检查]按钮,点击检查按钮时,调出[用户管理]设计项的列表界面 ,选中调出的[用户管理]设计项列表上的多条记录, 关闭[用户管理]列表时,将选中的记录中的username赋值给[方案管理]设计项所对应的实体中的JianChaRenYuan字段中. 前端sencha.cmd[方案管理]设计项列表上[检查]按钮中的js代码 1 function(button, record, e) 2 { 3 debugger; // 中断调试指令,可以手动删除它 4

C#Winform基础 一个button按钮调用另外一个button按钮的代码

1.UI 2.通过代码调用 1 using System; 2 using System.Collections.Generic; 3 using System.ComponentModel; 4 using System.Data; 5 using System.Drawing; 6 using System.Linq; 7 using System.Text; 8 using System.Threading.Tasks; 9 using System.Windows.Forms; 10 1

CI框架中一个类中调用另一个类中已经加载对象测试

controller.php 1 <?php 2 class CI_Controller { 3 4 private static $instance; 5 6 public function __construct() 7 { 8 self::$instance =& $this; 9 10 foreach (is_loaded() as $var => $class) 11 { 12 $this->$var =& load_class($class); 13 $obj

C# 线程(三):如何操纵一个线程

From : http://kb.cnblogs.com/page/42529/ 下面我们就动手来创建一个线程,使用Thread类创建线程时,只需提供线程入口即可.(线程入口使程序知道该让这个线程干什么事) 在C#中,线程入口是通过ThreadStart代理(delegate)来提供的,你可以把ThreadStart理解为一个函数指针,指向线程要执行的函数,当调用Thread.Start()方法后,线程就开始执行ThreadStart所代表或者说指向的函数. 打开你的VS.net,新建一个控制台

转:一个跨WINDOWS LINUX平台的线程类

来源:http://blog.csdn.net/dengxu11/article/details/7232681 继Windows下实现一个CThread封装类之后,这里我再实现一个跨WINDOWS LINUX平台的线程类 头文件 DXThread.h #ifndef __DXTHREAD_H__ #define __DXTHREAD_H__ #define DX_WINDOWS //在WINDOWS上就打开它 //#define DX_LINUX //在LINUX 上就打开它 #ifdef D

windows 一个进程可以允许最大的线程数

默认情况下,一个线程的栈要预留1M的内存空间 而一个进程中可用的内存空间只有2G,所以理论上一个进程中最多可以开2048个线程 但是内存当然不可能完全拿来作线程的栈,所以实际数目要比这个值要小. 你也可以通过连接时修改默认栈大小,将其改的比较小,这样就可以多开一些线程. 如将默认栈的大小改成512K,这样理论上最多就可以开4096个线程. 即使物理内存再大,一个进程中可以起的线程总要受到2GB这个内存空间的限制. 比方说你的机器装了64GB物理内存,但每个进程的内存空间还是4GB,其中用户态可用

写的一个简单定时器(非独立线程)

//Callback.h #ifndef __CALLBACK_H__ #define __CALLBACK_H__ typedef void (*T_CallBack)(void *); typedef struct { T_CallBack cb; void *obj; }ST_CallBack; int __NewTimer(void* obj, int interval, bool isloop, T_CallBack cb); void __DeleteTimer(int handle