实现Runnable接口的线程使用

实现runnable接口的多线程主要实现以下几步:

1.定义实现Runnable接口

 2.overwrite Runnable接口中的run方法,将线程要运行的代码存放在run方法中。

3.通过Thread类建立线程对象。

4.将Runnable接口的子类对象作为实际参数传递给Thread类的构造函数。

 5.调用Thread类的start方法开启线程并调用Runnable接口子类run方法。

程序开发中只要是多线程肯定永远以实现Runnable接口为主,因为实现Runnable接口相比继承Thread类有如下好处:

  • 避免点继承的局限,一个类可以继承多个接口。
  • 适合于资源的共享

但资源共享要注意线程安全问题

  目的:程序是否存在安全问题,如果有,如何解决?

如何找问题:

1.明确哪些代码是多线程运行代码。

2.明确共享数据

3.明确多线程运行代码中哪些语句是操作共享数据的。

[java]  view plain copy
  1. class Bank{  
  2.   
  3.     private int sum;  
  4.     public void add(int n){  
  5.       
  6.          sum+=n;  
  7.          System.out.println("sum="+sum);  
  8.       
  9.     }  
  10.   
  11. }  
  12.  class Cus implements Runnable{  
  13.   
  14.    private Bank b=new Bank();  
  15.    public void run(){  
  16.      synchronized(b){     
  17.          for(int x=0;x<3;x++)  
  18.          {  
  19.             b.add(100);  
  20.            
  21.          }  
  22.      }  
  23.    }  
  24.   
  25. }  
  26. public class BankDemo{  
  27.     public static void main(String []args){  
  28.         Cus c=new Cus();  
  29.         Thread t1=new Thread(c);  
  30.         Thread t2=new Thread(c);  
  31.         t1.start();  
  32.         t2.start();  
  33.       
  34.       
  35.     }  
  36.   
  37.   
  38. }  

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值