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

 public class Question1 {

     private int j = 0;
/**
* @param args
*/
public static void main(String[] args) {
Question1 q = new Question1();
Dec dec = q.new Dec();
Inc inc = q.new Inc();
for(int i=0; i<2;i++){
Thread t2 = new Thread(inc);
t2.start();
Thread t1 = new Thread(dec);
t1.start(); }
} private synchronized void inc(){
j++;
System.out.println( Thread.currentThread().getName()+"-inc:"+j);
} private synchronized void dec(){
j--;
System.out.println( Thread.currentThread().getName()+"-dec:"+j);
}
class Inc implements Runnable { @Override
public void run() {
inc(); }
} class Dec implements Runnable { @Override
public void run() {
dec(); } }
}

2.设计4个线程, 其中3个线程将一个长度为3的数组每项增加1,第4个线程输出数组3个数的和写出程序。

public class Question2 {
int[] a = new int[3];
/**
* @param args
*/
public static void main(String[] args) {
Question2 q = new Question2();
Inc inc = q.new Inc();
Print p = q.new Print();
for(int i=0; i<3; i++){
Thread t1 = new Thread(inc);
t1.start();
}
Thread t2 = new Thread(p);
t2.start();
} private synchronized void inc(){
for(int i=0;i<a.length;i++){
a[i] += 1;
} System.out.println(Thread.currentThread().getName()+"-inc:"+Arrays.toString(a));
} private synchronized void print(){
int sum = 0;
for(int i=0;i<a.length;i++){
sum += a[i];
}
System.out.println(Thread.currentThread().getName()+"-print:"+Arrays.toString(a)+"和为:"+sum);
} class Inc implements Runnable { @Override
public void run() {
inc(); } } class Print implements Runnable { @Override
public void run() {
print(); } }
}

java线程面试手写题的更多相关文章

  1. 三 基于Java动态数组手写队列

    手写队列: package dataStucture2.stackandqueue; import com.lt.datastructure.MaxHeap.Queue; import dataStu ...

  2. [不得不知道系列]Java线程面试你不得不知道的基础知识一

    Java内存管理面试指南一 Java基础面试指南一 Java基础面试指南二 Java基础面试指南三 Java基础面试指南四 Java线程面试指南一 Java线程面试指南二 Redis面试指南一 Kaf ...

  3. 前端面试手写代码——call、apply、bind

    1 call.apply.bind 用法及对比 1.1 Function.prototype 三者都是Function原型上的方法,所有函数都能调用它们 Function.prototype.call ...

  4. 前端面试手写代码——模拟实现new运算符

    目录 1 new 运算符简介 2 new 究竟干了什么事 3 模拟实现 new 运算符 4 补充 预备知识: 了解原型和原型链 了解this绑定 1 new 运算符简介 MDN文档:new 运算符创建 ...

  5. 前端面试手写代码——JS函数柯里化

    目录 1 什么是函数柯里化 2 柯里化的作用和特点 2.1 参数复用 2.2 提前返回 2.3 延迟执行 3 封装通用柯里化工具函数 4 总结和补充 1 什么是函数柯里化 在计算机科学中,柯里化(Cu ...

  6. java线程面试

    1) 什么是线程? 线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位.程序员可以通过它进行多处理器编程,你可以使用多线程对运算密集型任务提速.比如,如果一个线程完成 ...

  7. java开发面试大全刷题整理

    题目源自Java团长公众号,内容个人整理,来源于各大博客,未经允许,不准摘抄,仅供分享,不做商业使用. 本分享多数为浅层知识体系,更为底层的还请自行多写写代码,若有不对之处,望广大的人才指点,不喜勿喷 ...

  8. JAVA面试题 手写ArrayList的实现,在笔试中过关斩将?

    面试官Q1:可以手写一个ArrayList的简单实现吗? 我们都知道ArrayList是基于数组实现,如果让你实现JDK源码ArrayList中add().remove().get()方法,你知道如何 ...

  9. 二 基于java动态数组手写栈

    package dataStucture2.stack; import dataStucture2.array.MyDynamicArray; /** * 基于动态数组手写栈 * 设计时,栈中仅栈顶对 ...

随机推荐

  1. windows下几个方便的右键菜单

    一直在用,拷来拷去麻烦,贴这里方便自己方便大家 PSHere.reg 右键菜单打开powershell Windows Registry Editor Version 5.00 [HKEY_CLASS ...

  2. Mac 10.12安装Windows远程桌面工具Microsoft Remote Desktop

    说明:之前Office自带的Windows远程桌面工具虽然简便,但是保存的服务器列表有限.而这个微软推出的自家工具可以完美解决这些问题. 下载: (链接:https://pan.baidu.com/s ...

  3. PSR2规范

    为了尽可能的提升阅读其他人代码时的效率,下面例举了一系列的通用规则,特别是有关于PHP代码风格的.各个成员项目间的共性组成了这组代码规范.当开发者们在多个项目中合作时,本指南将会成为所有这些项目中共用 ...

  4. 西蒙布朗-C4模型

    关于 C4 模型的一些解释 C4 模型是来自 software architecture for developers 一书的定义,指的是 Context 上下文场景.Container 容器.Com ...

  5. Could not find a version that satisfies.... No matching distribution found for .....

    原文作者:aircraft 原文链接:https://www.cnblogs.com/DOMLX/p/10227403.html 今天在安装mysql-python的时候报了很多的错误,其中一条就是这 ...

  6. WPF中使用RenderTransformOrigin来控制动画的起点

    Render :渲染:Transform:动画:Origin:起点 RenderTransformOrigin:渲染动画的起点 取值为一个坐标的形式  取值范围: 0,0 到 1,1 0,0:表示左上 ...

  7. vue实现非路由跳转以及数据传递

    定义一个父组件 <template> <v-layout> <v-card contextual-style="dark" v-if="sh ...

  8. SQL语句映射文件(1)resultMap

    SQL 映射XML 文件是所有sql语句放置的地方.需要定义一个workspace,一般定义为对应的接口类的路径.写好SQL语句映射文件后,需要在MyBAtis配置文件mappers标签中引用,例如: ...

  9. 查看windows系统块大小

    C:\Users\xyw>fsutil fsinfo ntfsinfo 用法 : fsutil fsinfo ntfsinfo <volume pathname> 例如 : fsut ...

  10. 学习Rails之activeAdmin

        一.开始ActiveAdmin Active Admin是一个发布在RAILS3中使用的Gem. 1.我们为了快速开始我们对Active Admin的了解,我们首先安装它: 在你GemFile ...