博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
多线程的面试题
阅读量:6264 次
发布时间:2019-06-22

本文共 1899 字,大约阅读时间需要 6 分钟。

1、用java编程设计四个线程,其中两个线程每次都对j加1,另两个线程每次对j减1,线程要用两种实现方式。

package study;public class Factory {    int j;    Factory() {        j = 0;    }    synchronized void add() {        j++;        System.out.println(Thread.currentThread().getName() + ":" + j);    }    synchronized void min() {        j--;        System.out.println(Thread.currentThread().getName() + ":" + j);    }}package study;public class T1 implements Runnable {    Factory factory = null;        T1(Factory factory) {        this.factory = factory;    }    public int T1() {        return 1;    }        @Override    public void run() {        while(true) {            factory.add();            try {                Thread.sleep((int)Math.random() * 10);            } catch (InterruptedException e) {                // TODO Auto-generated catch block                e.printStackTrace();            }        }    }}package study;public class T2 extends Thread {    Factory factory = null;    T2(Factory factory) {        this.factory = factory;    }    @Override    public void run() {        while(true) {            factory.min();            try {                Thread.sleep((int)Math.random() * 10);            } catch (InterruptedException e) {                // TODO Auto-generated catch block                e.printStackTrace();            }        }    }}package study;public class Test2 {    public static void main(String[] args) {        Factory factory = new Factory();        T1 t1 = new T1(factory);        T2 t2 = new T2(factory);        t2.setName("减线程1");                T2 t3 = new T2(factory);        t3.setName("减线程2");                Thread thread1 = new Thread(t1, "加线程1");        Thread thread2 = new Thread(t1, "加线程2");                thread1.start();        thread2.start();        t2.start();        t3.start();    }}

结果:

加线程2:1169

加线程1:1170
减线程1:1169
减线程2:1168
加线程1:1169
加线程2:1170
减线程2:1169
减线程1:1168
减线程2:1167

...

转载地址:http://lkzpa.baihongyu.com/

你可能感兴趣的文章
XenServer之虚拟机备份篇(上) PHD Virtual Backup
查看>>
让数据库访问组件支持Using
查看>>
MySQL Study之--Mysql启动失败“mysql.host”
查看>>
LVM逻辑盘卷管理实战
查看>>
将eclipse的maven项目导入到intellij idea中
查看>>
openstack 云平台API
查看>>
tomcat注册成windows系统服务
查看>>
开源web终端ssh解决方案-gateone简介
查看>>
Google发布Android KTX预览版
查看>>
数据库设计系列11--选择文件组织方式和索引
查看>>
SQL Server 2016 Enterprise (x64) 中英文下载!
查看>>
解决Exchange 2007 无法在虚拟机发送邮件的问题
查看>>
SoftGrid教程——客户端安装
查看>>
隐藏IE进程的清除指南
查看>>
Linux 远程开机(walk on lan)
查看>>
CentOS 6.3下 VNC Server 的配置
查看>>
微软反盗版技术新增"黄灯"状态 改进用户体验
查看>>
OpenStack —— 认证服务Keystone(二)
查看>>
实例讲解动态链接库的开发
查看>>
C语言与ARM汇编混编
查看>>