线程问题—一个线程怎么调出另外一个线程的结果。

问题:建两线程,线程1进行计算1*1+~+99*99,线程2打印出线程1名字,每隔段时间读取一次线程1的计算结果?

 1 public class Other{
 2     public static volatile int sum;
 3     public static void main(String[] args){
 4         Thread t1=new ThreadClass();
 5         t1.setName("我是线程1");
 6         Thread t2=new Thread(new RunnableClass(t1.getName()));
 7         t2.setDaemon(true);
 8         t1.start();
 9         t2.start();
10     }
11     static class RunnableClass implements Runnable{
12     private String name;
13     public RunnableClass(String name){
14         this.name=name;
15     }
16     public void run(){
17         while(true){
18
19                 try{
20                 System.out.println(name+"  "+sum);
21                 Thread.sleep(3000);
22             }catch (Exception e){
23                 System.out.println(e);
24             }
25         }
26     }
27
28 }
29 static class ThreadClass extends Thread {
30     public void run (){
31         for(int k=1;k<100;k++){
32             try{sum+=count(k);
33             sleep(1000);}catch(Exception e){
34                 System.out.println(e);
35             }
36         }
37     }
38     public int count(int i){
39         return (i*i);
40         }
41
42 }
43 }

Runnable接口 没有 Thread 类里面的方法,所以使用sleep方法时,需要Thread.sleep();记得sleep方法会返回异常,所以要用try来进行异常处理。static的作用!记住,下次将写出,请大家多提提建议,谢谢! 
时间: 2024-07-31 22:55:42

线程问题—一个线程怎么调出另外一个线程的结果。的相关文章

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

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

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

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

//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

JAVA多线程之当一个线程在执行死循环时会影响另外一个线程吗?

一,问题描述 假设有两个线程在并发运行,一个线程执行的代码中含有一个死循环如:while(true)....当该线程在执行while(true)中代码时,另一个线程会有机会执行吗? 二,示例代码(代码来源于互联网) 1 public class Service { 2 Object object1 = new Object(); 3 4 public void methodA() { 5 synchronized (object1) { 6 System.out.println("methodA

当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法

当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法 对象的synchronized方法不能进入了,但它的其他非synchronized方法还是可以访问的. 1 public class TT implements Runnable { 2 int b = 100; 3 public synchronized void m1(){ 4 b = 10000; 5 try { 6 Thread. sleep(5000); 7 System. out.prin

java的服务是每收到一个请求就新开一个线程来处理吗?tomcat呢?

首先,服务器的实现不止有这两种方式. 先谈谈题主说的这两种服务器模型: 1.收到一个请求就处理,这个时候就不能处理新的请求,这种为阻塞 这个是单线程模型,无法并发,一个请求没处理完服务器就会阻塞,不会处理下一个请求.一般的服务器不会使用这种方式实现. 2.收到一个请求就新开一个线程去处理任务,主线程返回,继续处理下一个任务,这种为非阻塞 首先纠正一个错误,这并不是非阻塞,它也是阻塞的.相对第一个模型来说,它解决了主线程阻塞的问题,有了一定程度的并发量,但是在每个新开的线程中还是阻塞的.如果100

java中线程优先级是怎么回事给出一个例子

j6.线程优先级 (视频下载) (全部书籍) java中线程的优先级用1-10之间的数字表示,数值越大优先级越高,默认的优先级为5.Java中的线程优先级是在Thread类中定义的常量 NORM_PRIORITY : 值为5,MAX_PRIORITY :值为10,MIN_PRIORITY : 值为1,缺省优先级为 NORM_PRIORITY.有关优先级的常用方法有两个:1)final void setPriority(int newp) : 修改线程的当前优先级  2)final int get

一个故事讲完进程、线程和协程(操作系统基础知识)

原文链接:https://mp.weixin.qq.com/s/zuWRx1FGuBC-_HwuA7jK3w 转自:码农翻身(微信号:coderising) 很久以前,有两个程序,暂且称他们旺财和小强吧. 旺财和小强这两个程序都很长,每个都有十几万行. 他们两个的人生价值就是到CPU上去运行,把运行结果告诉人类. CPU是稀缺资源,只有一个,他们俩必须排着队,轮流使用. 旺财从头到尾执行完了,让出CPU, 让小强从头儿去执行. 人类把这种处理方式叫做批处理. 进程 长久以来,两人相安无事. 后来

Google面试题—有四个线程1、2、3、4。线程1的功能就是输出1,线程2的功能就是输出2,以此类推.........现在有四个文件ABCD

分类: windows编程 C++ 2012-10-27 19:56 3410人阅读 评论(1) 收藏 举报 有四个线程1.2.3.4.线程1的功能就是输出1,线程2的功能就是输出2,以此类推.........现在有四个文件ABCD.初始都为空.现要让四 个文件呈如下格式:A:1 2 3 4 1 2....B:2 3 4 1 2 3....C:3 4 1 2 3 4....D:4 1 2 3 4 1....请设计程序. [cpp] view plaincopy #include <stdio.h