多线程如何实现资源共享?
2个回答
展开全部
在多线程程序设计中,多个线程往往需要对部分资源进行共享,那么如何实现呢? 下面让我们分析一下。Java中有两种方法可以实现线程,一种是继承Thread类并且覆盖run方法,一种是实现Runnable接口并覆盖run方法。所谓线程中的资源共享也就是多个线程对该资源只保存一份,而不是每个线程内都各自保存一份。记得在面向对象中曾经说过,若需要类中的对象共享某资源,可以把它定义成static的类方法或者是类变量,但是在线程中,当我们启动线程的时候,Java虚拟机就会调用线程中的run方法,而被覆盖的run不是static类型的,所以它不能访问static资源。此方法实效。 那么还有其他方法吗?让我们回忆下Java实现线程的方式有几种。1.继承Thread,覆盖run方法,利用start启动线程 2.实现Runnable接口,覆盖run方法,把覆盖Runnable接口后的类创建一份实例,把该实例传递给Thread(Runnable r),作为构造函数的参数。 从上面的分析我们可以知道,我们可以利用第二种方式实现多线程的资源共享,把资源保存在Runnable接口中,然后只创建一份实现了Runnable接口的类的实例传递个需要共享资源的线程就可以了。例如class ThreadTest implements Runnable
{ ///共享资源 public void run() {
//对共享资源的处理 }}MulThread mt=new MulThread();
ThreadTest t=new ThreadTest();
Thread t1=new Thread(t);
Thread t2=new Thread(t);
Thread t3=new Thread(t);
t1.start();
大雅新科技有限公司
2024-11-19 广告
2024-11-19 广告
这方面更多更全面的信息其实可以找下大雅新。深圳市大雅新科技有限公司从事KVM延长器,DVI延长器,USB延长器,键盘鼠标延长器,双绞线视频传输器,VGA视频双绞线传输器,VGA延长器,VGA视频延长器,DVI KVM 切换器等,优质供应商,...
点击进入详情页
本回答由大雅新科技有限公司提供
2015-06-27 · 知道合伙人教育行家
关注
展开全部
所谓线程中的资源共享也就是多个线程对该资源只保存一份,而不是每个线程内都各自保存一份。
Java中有两种方法可以实现线程,一种是继承Thread类并且覆盖run方法,一种是实现Runnable接口并覆盖run方法。记得在面向对象中曾经说过,若需要类中的对象共享某资源,可以把它定义成static的类方法或者是类变量,但是在线程中,当我们启动线程的时候,Java虚拟机就会调用线程中的run方法,而被覆盖的run不是static类型的,所以它不能访问static资源。此方法实效。 那么还有其他方法吗?让我们回忆下Java实现线程的方式有几种。1.继承Thread,覆盖run方法,利用start启动线程 2.实现Runnable接口,覆盖run方法,把覆盖Runnable接口后的类创建一份实例,把该实例传递给Thread(Runnable r),作为构造函数的参数。 从上面的分析我们可以知道,我们可以利用第二种方式实现多线程的资源共享,把资源保存在Runnable接口中,然后只创建一份实现了Runnable接口的类的实例传递个需要共享资源的线程就可以了。例如class ThreadTest implements Runnable
{ ///共享资源 public void run() {
//对共享资源的处理 }}MulThread mt=new MulThread();
ThreadTest t=new ThreadTest();
Thread t1=new Thread(t);
Thread t2=new Thread(t);
Thread t3=new Thread(t);
t1.start();
Java中有两种方法可以实现线程,一种是继承Thread类并且覆盖run方法,一种是实现Runnable接口并覆盖run方法。记得在面向对象中曾经说过,若需要类中的对象共享某资源,可以把它定义成static的类方法或者是类变量,但是在线程中,当我们启动线程的时候,Java虚拟机就会调用线程中的run方法,而被覆盖的run不是static类型的,所以它不能访问static资源。此方法实效。 那么还有其他方法吗?让我们回忆下Java实现线程的方式有几种。1.继承Thread,覆盖run方法,利用start启动线程 2.实现Runnable接口,覆盖run方法,把覆盖Runnable接口后的类创建一份实例,把该实例传递给Thread(Runnable r),作为构造函数的参数。 从上面的分析我们可以知道,我们可以利用第二种方式实现多线程的资源共享,把资源保存在Runnable接口中,然后只创建一份实现了Runnable接口的类的实例传递个需要共享资源的线程就可以了。例如class ThreadTest implements Runnable
{ ///共享资源 public void run() {
//对共享资源的处理 }}MulThread mt=new MulThread();
ThreadTest t=new ThreadTest();
Thread t1=new Thread(t);
Thread t2=new Thread(t);
Thread t3=new Thread(t);
t1.start();
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询