设计4个线程,其中两个线程每次对j增加1,另外两个线程对j每次减少1

 1 public class Test {
 2
 3    // 采用 Runnable 接口方式创建的多条线程可以共享实例属性
 4    private int i ;
 5
 6    // 同步增加方法
 7    private synchronized void inc(){
 8       i ++;
 9       System. out .println(Thread.currentThread().getName()+ "--inc--" + i );
10    }
11    // 同步减算方法
12    private synchronized void dec(){
13       i --;
14       System. out .println(Thread.currentThread().getName()+ "--dec--" + i );
15    }
16 //增加线程
17    class Inc implements Runnable {
18       public void run() {
19           inc();
20       }
21    }
22    // 减算线程
23    class Dec implements Runnable{
24       public void run() {
25           dec();
26       }
27    }
28    public static void main(String[] args) {
29       Test t = new Test();
30        // 内部类的实例化
31       Inc inc = t. new Inc();
32       Dec dec = t. new Dec();
33       // 创建 2*n 个线程 此处 n=2
34       for ( int i = 0; i < 2; i++) {
35           new Thread(inc).start();
36           new Thread(dec).start();
37       }
38    }
39
40 }
时间: 2024-10-06 00:10:52

设计4个线程,其中两个线程每次对j增加1,另外两个线程对j每次减少1的相关文章

设计四个线程,其中共两个线程每次对j增加1,另外两个线程每次对j减少1。循环100次,写出程序。

package cn.usst.DataTest6; /** * 设计四个线程,其中共两个线程每次对j增加1,另外两个线程每次对j减少1.循环100次,写出程序. * @ * */ public class DataTest6 { private int j; public static void main(String[] args) { DataTest6 dt = new DataTest6(); Inc inc = dt.new Inc(); Dec dec = dt.new Dec()

设计 4 个线程,其中两个线程每次对 j 增加 1,另外两个线程对 j 每次减少 1。写出程序。

先设计一个类处理加减这一行为: public class ManyThread { private int j = 0; public synchronized void inc(){ j++; System.out.println(Thread.currentThread().getName() + "inc" + j); } public synchronized void dec(){ j--; System.out.println(Thread.currentThread().

编写一个程序, 四个线程,其中两个线程每次对j增加1,另外两个线程对j每次减少1,要求使用内部类

/**  * @author laishengfeng  * @2014-8-27  * @TODO 编写一个程序,  四个线程,其中两个线程每次对j增加1,  * 另外两个线程对j每次减少1(要求使用内部类线程)  */ public class Test {   public static void main(String[] args) {   MyThread mt = new MyThread();  //MyThread对象   mt.new InnerThread1().start

线程间操作无效: 从不是创建控件"窗体的名称"的线程访问它.

有两种方式解决 1.在窗体构造函数中写Control.CheckForIllegalCrossThreadCalls =false;2.使用Invoke等委托函数. 问题原因是.net2.0以后拒绝多线程访问空间,避免空间造成死锁.以前Control.CheckForIllegalCrossThreadCalls =false;默认就是这样,现在默认为true.如果不会好几个线程同时操作一个控件用方法1就可以.如果存在多个线程一起操作控件使用方法2 方法2可以 Invoke(new Method

线程间操作无效: 从不是创建控件“控件id”的线程访问它。(.net跨线程执行方法)

找了好久资料,终于解决了,特此记录下来. 1 delegate void DelListHandler(string number); /// <summary> /// 按标识删除listview内容 /// </summary> /// <param name="number">标识</param> private void DelListViewLog(string number) { for (int i = 0; i <

android开发中,两个按下手机实体返回键,两个Activity反复来回跳转的问题

android开发中,对于用intent实现跳转的Ativity,有时候按下手机的返回键时,两个Activity之间会多次相互跳转,始终退出不了程序的情况.这是由于从Activity  A跳转到Activity  B时,A被压入Activity栈中:当从B返回时,默认又重新创建了一个Activity A对象,这样一来就有了多个Activity A对象.所以造成了无法退出情况. 解决办法是:在AndroidManifest.xml文件中找到Activity A项,在其属性中加入  android:

PHP两个字符串比较(人为出错),两字符串类型和数据表面相等,但strcmp()结果不为0

PHP中,比较两个字符串是否相等用:strcmp(): PHP strcmp() 函数 PHP String 函数 定义和用法 strcmp() 函数比较两个字符串. 该函数返回: 0 - 如果两个字符串相等 <0 - 如果 string1 小于 string2 >0 - 如果 string1 大于 string2 语法 strcmp(string1,string2) 参数 描述 string1 必需.规定要比较的第一个字符串. string2 必需.规定要比较的第二个字符串. 提示和注释 注

两个堆栈实现一个队列和一叠两个队列实现【算法导论课后题】

两个栈实现队列两个队列实现堆栈问题,网上有很多资料.这里仅仅是叙述操作方法的介绍觉得至少. 两个栈实现一个队列 思想:假设两个栈分别为s1,s2.对s1进行入队,出队时,先推断s2是否为空,假设是则将s1中元素压入s2并弹出最上面元素,假设不是,则直接弹出s2最上面的元素. <span style="font-size:18px;">EnQueue(s1,s2,k){ push(s1,k)</span><span style="font-fami

北京房租连续两月下降 租赁市场房源增加

北京房租连续两月下降 租赁市场房源增加 业内热评腾讯房产2014-10-19 07:38 我要分享 7 据新华社电北京统计局最新发布的数据显示,今年9月,北京市居民消费价格总水平同比上涨1.1%,其中9月租房租金环比下降0.2%,同比上涨0.3%,较8月环比下降0.1%的降幅继续扩大. 中原地产首席分析师张大伟分析认为,楼市降温使租赁市场房源增加,租赁供需矛盾相对缓和.住宅买卖成交惨淡,许多业主将房源转售为租或租售均可.以北京为例,买卖市场降温一定程度上使北京租赁房源明显上涨,房价的下调也使租金

一个整型数组里除了两个不同数字之外,其它的数字都出现了两次。请写程序找出这两个只出现一次的数字。

曾经做过一道水题找出除了一个数字之外,其他数字都有2个.直接异或 最后结果就是那个数. 现在变成存在2个不一样的数字,假设成x,y,那么可以O(n)求出x^y,因为x,y不同,所以异或的结果不为0,看成2进制数,那么找到第一位为1 的位置,将这个位置设置为划分点,数组里所有这个位置为1 的异或一次,所有为0的再异或一次,最终求出的两个即为两个独特的数字. #include <stdio.h> #include <string.h> #include <algorithm>