码迷,mamicode.com
首页 > 其他好文 > 详细

Thread和Runnable

时间:2020-02-05 23:35:32      阅读:66      评论:0      收藏:0      [点我收藏+]

标签:顺序   runnable   ati   png   技术   art   return   rgs   info   

继承Thread类不能实现资源共享。(程序启动了三个线程,但是3个线程却分别卖了各自的5张票,并没有达到资源共享的目的)
实现Runnable接口可以资源共享。(程序启动了三个线程,但是3个线程一共才卖了5张票,即ticket属性被所有的线程对象共享)

问题:
设计 4 个线程,其中两个线程每次对 j 增加 1,另外两个线程对 j 每次减少 1。写出程序。
以下程序使用内部类实现线程,对 j 增减的时候没有考虑顺序问题。

代码:

   public class Test {
    private int j=50;  
    public static void main(String[] args) {
    Test test = new Test();
    for(int i=0;i<30;i++){ 
         Thread t=new Thread(test.getAdd()); 
         t.start(); 
         t=new Thread(test.getJian()); 
         t.start(); 
    } 
}

public Add getAdd() {
    return new Add();
}

public Jian getJian() {
    return new Jian();
}

public synchronized void add() {
    j++;
    System.out.println("加1");
}

public synchronized void jian() {
    j--;
    System.out.println("减一");
}

class Add implements Runnable{
        public void run() {
            add();
        }
}

class Jian implements Runnable{
    public void run() {
        jian();
    }
}

}

部分效果:
技术图片

Thread和Runnable

标签:顺序   runnable   ati   png   技术   art   return   rgs   info   

原文地址:https://www.cnblogs.com/miniSimple/p/12266906.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!