当多个线程的执行代码来自同一个类的run方法,既称他们共享相同的代码;当共享访问相同的对象时,既他们共享相同的数据。
演示代码
Java代码
import java.lang.*;
public class Demo
{
public static void main(String[] args)
{
MyThread thread=new MyThread();
new Thread(thread,"A").start();
new Thread(thread,"B").start();
new Thread(thread,"C").start();
}
}
class MyThread implements Runnable
{
private int sleepTime;
public MyThread()
{
sleepTime=(int)(Math.random()*6000); //获得随机休眠毫秒数
}
public void run()
{
try
{
System.out.println(Thread.currentThread().getName()+"要休息"+sleepTime+"ms");
Thread.sleep(sleepTime);
System.out.println(Thread.currentThread().getName()+"睡醒了。");
}
catch(Exception e)
{
System.out.println(Thread.currentThread().getName()+"被吵醒了!");
}
}
}
import java.lang.*;
public class Demo
{
public static void main(String[] args)
{
MyThread thread=new MyThread();
new Thread(thread,"A").start();
new Thread(thread,"B").start();
new Thread(thread,"C").start();
}
}
class MyThread implements Runnable
{
private int sleepTime;
public MyThread()
{
sleepTime=(int)(Math.random()*6000); //获得随机休眠毫秒数
}
public void run()
{
try
{
System.out.println(Thread.currentThread().getName()+"要休息"+sleepTime+"ms");
Thread.sleep(sleepTime);
System.out.println(Thread.currentThread().getName()+"睡醒了。");
}
catch(Exception e)
{
System.out.println(Thread.currentThread().getName()+"被吵醒了!");
}
}
}
运行结果
输出结果代码
A要休息5299ms
B要休息5299ms
C要休息5299ms
//漫长的等待
C睡醒了。
A睡醒了。
B睡醒了。
A要休息5299ms
B要休息5299ms
C要休息5299ms
//漫长的等待
C睡醒了。
A睡醒了。
B睡醒了。
可见,因为是用一个Runnable类型的对象创建的三个新线程,这三个线程就共享了这个对象的私有成员sleepTime变量,在本次运行中,三个线程都休眠了5299毫秒。
以上内容摘自http://coolszy.iteye.com/blog/485765
谢谢学长
分享到:
相关推荐
Qt 线程间共享数据是本文介绍的内容,多的不说,先来啃内容。Qt线程间共享数据主要有两种方式: 使用共享内存。即使用一个两个线程都能够共享的变量(如全局变量),这样两个线程都能够访问和修改该变量,从而达到...
多线程注意:wait()方法的调用要有判定条件常用 while () obj.wait(timeout, nanos); ... // Perform action appropriate to condition ...synchronized会影响共享数据,但对其他语句的执行不会有规律了!
NET中多线程间资源共享与访问
java核心知识点学习----多线程间的数据共享和对象独立,ThreadLocal详解.pdf
linux多线程间使用共享内存例程,C++版本。可用于大量数据的多线程共享。
多线程进程间交换数据使用的共享内存多线程进程间交换数据使用的共享内存多线程进程间交换数据使用的共享内存多线程进程间交换数据使用的共享内存多线程进程间交换数据使用的共享内存
线程间通信方式3:消息传递方式的演示。采用计算演示线程的执行,并采用用户界面线程来实时显示执行的进度,线程间的通信方式采用了3种方式相结合,对多线程间的通信有比较好的学习和研究价值。
Qt线程间共享数据主要有两种方式: 1)使用共享内存。即使用一个两个线程都能够共享的变量(如全局变量),这样两个线程都能够访问和修改该变量,从而达到共享数据的目的。 2)使用singal/slot机制,把数据从一个...
NULL 博文链接:https://903497571.iteye.com/blog/1869428
互斥以排他方式防止共享数据被并发修改。互斥锁是一个二元变量,其状态为开锁(允许0)和上锁(禁止1),将某个共享资源与某个特定互斥锁绑定后,对该共享资源的访问如下操作: (1)在访问该资源前,首先申请该互斥...
关于线程存储和共享内存描述,帮助大家理解进程间通信的一种简单方式,及线程间数据的独立存储形式。
Windows 2000提供的常用对象可分成三类:核心应用服务、线程同步和线程间通讯。其中,开发人员可以使用线程同步对象来协调线程和进程的工作,以使其共享信息并执行任务。此类对象包括互锁数据、临界段、事件、互斥体...
python爬虫-10-线程之间共享全局变量数据出现错误问题.ev4.rar
线程间无需特别的手段进行通信,因为线程间可以共享数据结构,也就是一个全局变量可以被两个线程同时使用。不过要注意的是线程间需要做好同步,一般用 mutex。pthread_mutex_lock 声明开始用互斥锁上锁,此后的代码...
前几天学习共享内存,和多线程应用写了个小程序,给初学者一点帮助
Python自学教程-10-线程之间共享全局变量数据出现错误问题.ev4.rar
这样可以避免多个线程同时访问共享资源,从而避免数据不一致和其他潜在问题。 4. 基于Http协议:项目使用了Java的HttpURLConnection类来实现基于Http协议的文件下载。这使得项目具有较好的通用性,可以应用于各种...
java中的多线程内部类实现数据共享和Runnable实现数据共享借鉴.pdf
java中的多线程内部类实现数据共享和Runnable实现数据共享归类.pdf
程序间共享内存,用于数据交换,非常强大的示例,解决你进程间数据共享的问题 不错,解决了传输问题,可以共享N个字符串。整数等类型 改造一下,进程通讯就可以用了 我用它做串口数据共亭。。不错。。 挺好用的我...