1, 子线程循环10次,接着主线程循环100,接着又回到子线程循环10次,接着再回到主线程又循环100,如此循环50次
代码实现如下:
public class ThreadCommunicationDemo { // main函数 是一个主线程 public static void main(String[] args) { final Business business = new Business(); // 开启一个 子线程 new Thread(new Runnable() { public void run() { for (int i = 1; i <= 50; i++) { business.sub(i); } } }) { }.start(); // for (int i = 1; i <= 50; i++) { business.main(i); } } } // class Business { private boolean isShouldSub = true; // 子线程 public synchronized void sub(int i) { // 如果不是子线程要执行 则处于等待状态 while (!isShouldSub) { try { this.wait(); } catch (InterruptedException e) { e.printStackTrace(); } } // 否则执行子线程循环 for (int j = 1; j <= 10; j++) { System.out.println("子线程:" + j + ",循环次数:" + i); } // 结束之后 将boolean 改为flase isShouldSub = false; // 同时 要唤醒线程等待状态 this.notify(); } // 主线程 public synchronized void main(int i) { // 如果是子线程正在执行 则主线程处于等待状态 while (isShouldSub) { try { this.wait(); } catch (InterruptedException e) { e.printStackTrace(); } } // 否则 执行主线程循环 for (int j = 1; j <= 100; j++) { System.out.println("主线程:" + j + ",循环次数:" + i); } // 结束之后 将boolean 改为 true isShouldSub = true; // 同时 要唤醒线程等待状态 this.notify(); } } JAVA1.5并发库实现:
import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.locks.Condition; import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock; public class ThreadTest { private static Lock lock = new ReentrantLock(); private static Condition subThreadCondition = lock.newCondition(); private static boolean bBhouldSubThread = false; public static void main(String[] args) { ExecutorService threadPool = Executors.newFixedThreadPool(3); threadPool.execute(new Runnable() { public void run() { for (int i = 1; i <= 50; i++) { lock.lock(); try { if (!bBhouldSubThread) subThreadCondition.await(); for (int j = 1; j <= 100; j++) { System.out.println("主线程:" + j + ",循环次数:" + i); } bBhouldSubThread = false; subThreadCondition.signal(); } catch (Exception e) { } finally { lock.unlock(); } } } }); threadPool.shutdown(); for (int i = 1; i <= 50; i++) { lock.lock(); try { if (bBhouldSubThread) subThreadCondition.await(); for (int j = 1; j <= 10; j++) { System.out.println("子线程:" + j + ",循环次数:" + i); } bBhouldSubThread = true; subThreadCondition.signal(); } catch (Exception e) { } finally { lock.unlock(); } } } }
2,验证一个字符 是否在一个数组中包含 代码实现如下: /** * 验证一个字符 是否在一个数组中包含 * @author * */ public class Check1 { public static int check(String[] strArr,String str) throws IllegalAccessException{ int location = -1; int len = strArr.length; if (strArr == null) { throw new IllegalAccessException(); } for (int i = 0; i < len; i++) { if (str.equals(strArr[i])) { location = i; break; } } return location; } // public static void main(String[] args) { String strArr[] = {"a","b","c","d","e"}; String str = "b"; int location ; try { location = check(strArr, str); if (location == -1) { System.out.println("查找的字符:" + str+ "没有在数组中"); }else { System.out.println("字符在数组中出现的位置是:"+location); } } catch (IllegalAccessException e) { System.out.println("请不要输入null数组."); e.printStackTrace(); } } }
3,java分解一个整数
代码实现如下:
import java.util.Scanner; /** * 分解一个数字 * * 请输入一个整数数字: 3435 您输入的数字是:3435 3 * 5 * 229 * @author * */ public class Decomposition { private static int k = 2; public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.println("请输入一个整数数字:"); int number = scanner.nextInt(); System.out.println("您输入的数字是:" + number); fenJie(number); } public static void fenJie(int number){ if (k == number) { System.out.println(k); return; }else if(number % k == 0){ System.out.print(k+ " * "); fenJie(number / k); }else { k++; fenJie(number); } } }
4,将输入的一个字符串 拆开 分类
代码实现如下:
import java.util.Scanner; /** * 将输入的一个字符串 拆开 分类 * * 请随便输入一个字符串 sdf34#$%%多发点4353 number : 6 space : 0 letter : 3 other : 7 * @author * */ public class Fenlei { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.println("请随便输入一个字符串"); String str = scanner.nextLine(); char [] c = str.toCharArray(); int number = 0;//数字 int space = 0;//空 int letter = 0;//字母 int other = 0; for (int i = 0; i < c.length; i++) { if (((c[i] > 'a') && (c[i] < 'Z')) || ((c[i] > 'A') && (c[i] < 'z'))) { letter ++; } else if ((c[i] > '0')&&(c[i] < '9')){ number ++; } else if (String.valueOf(c[i]).equals("")) { space ++; } else{ other ++; } } System.out.println("number : " + number); System.out.println("space : " + space); System.out.println("letter : " + letter); System.out.println("other : " + other); } }
5,计算100 到 200中 共有多少个素数
代码实现如下:
/** * 100 到 200中 共有多少个素数 * @author Administrator * */ public class SushuTest { public static void main(String[] args) { int count = 1; for (int i = 100; i <= 200; i++) { if (isSuShu(i)) { count++; } } System.out.println("素数一共是:" + count + "个"); } public static boolean isSuShu(int i){ boolean isSuShu = true; for(int j = 2; j < Math.sqrt(i); j++){ if (i % j == 0) { isSuShu = false; } } return isSuShu; } }
6,一个整数,大于 0,不用循环和本地变量,按照 n,2n,4n,8n 的顺序递增, 当
值大于 5000 时,把值按照指定顺序输出来。
例:n=1237
则输出为:
1237,
2474,
4948,
9896,
9896,
4948,
2474,
1237,
代码实现如下:
public class TestPrint1 { public static void main(String[] args) { printOne(1237); } private static void printOne(int n) { System.out.println(n); if (n < 5000) { printOne(n * 2); }else { System.out.println(n); printTwo(n/2); } } private static void printTwo(int n){ if (n >= 1237) { System.out.println(n); printTwo(n/2); } } }
7,java打印
*
***
*****
*******
*****
***
*
代码实现如下:
public class Test1 { public static void main(String[] args) { for (int i=1; i<=13; i+=2){ for(int j=1; j<=i && i+j<= 14; j++){System.out.print("*");} System.out.println(); // 换行 } } } 8,用迭代的方法,判断是不是一个回文字符串,如”abdba” 代码实现如下: public class Test2 { /** * @param args * 用迭代的方法,判断是不是一个回文字符串,如”abdba” * @author BZ70000910 */ public static void main(String[] args) { // TODO Auto-generated method stub Test2 t = new Test2(); System.out.println(t.idAbcbA("abcba")); } public boolean idAbcbA(String str){ while(str.length() > 1){ int strLen = str.length(); char first = str.charAt(0); char last = str.charAt(strLen - 1); if (first == last) { String str2 = str.substring(1,strLen-1); System.out.println(str2); idAbcbA(str2); }else { return false; } //不加break,就会进入死循环,因为退出循环也是一层一层的。 break; } return true; } }
9,java来获取一个list集合里面 最大值、中间值、最小值格式多少?
代码实现如下:
import java.util.ArrayList; import java.util.Arrays; public class Test5 { private ArrayList<Integer> arrayList; public Test5(ArrayList<Integer> arrayList) { this.arrayList = arrayList; } /** * @param args */ public static void main(String[] args) { ArrayList<Integer> arrayList = new ArrayList<Integer>(); Test5 t = new Test5(arrayList); t.addElement(4); t.addElement(2); t.addElement(1); t.addElement(3); t.addElement(7); t.addElement(6); t.addElement(5); System.out.println("最大值是:"+t.maxi()); System.out.println("中间值是:"+t.middlei()); System.out.println("最小值是:"+t.mini()); } public int length(){ return arrayList.size(); } public void addElement(int element){ arrayList.add(element); } public int maxi(){ int max = arrayList.get(0); for(int i = 1; i < arrayList.size();i++){ if (max < arrayList.get(i)) { max = arrayList.get(i); } } return max; } public int mini(){ int min = arrayList.get(0); for (int i = 1; i < arrayList.size(); i++) { if (min > arrayList.get(i)) { min = arrayList.get(i); } } return min; } public int middlei(){ int middle = 0; int size = length(); Integer[] i = arrayList.toArray(new Integer[size]); Arrays.sort(i); return i[size/2]; } }
10,题目:判断101-200之间有多少个素数,并输出所有素数。 程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,
* 则表明此数不是素数,反之是素数。
代码实现如下:
/** * 题目:判断101-200之间有多少个素数,并输出所有素数。 程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除, * 则表明此数不是素数,反之是素数。 * * @author * */ public class LianXiang { public static void main(String[] args) { int count = 0; for (int i = 101; i < 200; i += 2) { boolean b = false; for (int j = 2; j <= Math.sqrt(i); j++) { if (i % j == 0) { b = false; break; } else { b = true; } } if (b == true) { count++; System.out.println(i); } } System.out.println("素数个数是: " + count); } } 11,设计4个线程,其中两个线程每次对j增加1,另外两个线程对j每次减少1。写出程序。 以下程序使用内部类实现线程,对j增减的时候没有考虑顺序问题。 代码实现如下: /** * 设计4个线程,其中两个线程每次对j增加1,另外两个线程对j每次减少1。写出程序。 以下程序使用内部类实现线程,对j增减的时候没有考虑顺序问题。 * @author * */ public class ThreadTest1 { private int j ; public static void main(String[] args) { ThreadTest1 t = new ThreadTest1(); Inc inc = t.new Inc(); Dec dec = t.new Dec(); for (int i = 0; i < 2; i++) { Thread tt = new Thread(inc); tt.start(); tt = new Thread(dec); tt.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() { for(int i = 0; i < 100; i++){ inc(); } } } class Dec implements Runnable{ @Override public void run() { for(int i = 0; i < 100; i++){ dec(); } } } }
12打印九九乘法表
代码如下:
package com.sg.test; public class Jiujiu { public static void main(String[] args) { for(int i = 1, j =1; j <= 9; i++){ System.out.print(i + "*" + j +" = "+i*j+" "); if(i == j){ i=0; j++; System.out.println(); } } } }
相关推荐
Java面试是评估程序员技术能力的重要环节,而Java面试代码与编程题则是衡量候选人对语言掌握程度、解决问题能力和逻辑思维的关键标准。以下是一些基于Java面试的常见知识点,这些知识点不仅适用于面试,也是日常开发...
包含: 120个Java经典面试题和答案(上).pdf 120个Java经典面试题和答案(下).pdf Java程序员面试笔试宝典.pdf ...代码与编程题.pdf 程序员面试宝典.pdf JAVA面试题集锦1.pdf JAVA面试题集锦2.pdf
2011最新整理java经典代码.doc 25个经典的Spring面试问答.docx 8张图解java.docx Addison.Wesley.Java.Concurrency.in.Practice.May.2006.chm Agile Java 测试驱动开发的编程技术.pdf Java 8 默认方法和多继承.docx ...
在这篇文章中,我们将讨论Java面试题中的一些代码与编程题,涵盖Singleton模式、继承时类的执行顺序问题、内部类的实现方式等几个方面。 Singleton模式 Singleton模式是一种常用的设计模式,主要作用是保证在Java...
在Java面试中,编程题通常是评估应聘者编程能力、逻辑思维以及问题解决技巧的重要环节。以下是一些从给定文件中提取的编程题知识点: 1. **菲波拉契数列**: - 题目1涉及到经典的菲波拉契数列,它是一个序列,每个...
在Java面试中,编程题是评估候选人技术能力的重要环节。本压缩包文件包含了一系列常见的Java编程题目,旨在帮助学习者巩固基础,提高解决问题的能力。 1. **冒泡排序**:冒泡排序是最基础的排序算法之一,通过不断...
2011最新整理java经典代码.doc 25个经典的Spring面试问答.docx 8张图解java.docx Addison.Wesley.Java.Concurrency.in.Practice.May.2006.chm Agile Java 测试驱动开发的编程技术.pdf Java 8 默认方法和多继承.docx ...
14. **算法与数据结构**:虽然Java面试中可能不会深入到算法实现,但对基础算法(如排序、搜索)的理解,以及常见数据结构(如栈、队列、树、图)的掌握是非常重要的。 15. **Java 8及更高版本的新特性**:比如...
2011最新整理java经典代码.doc 25个经典的Spring面试问答.docx JavaEE学习笔记.pdf java_Java_学习笔记.pdf Java_Performance.pdf java代码效率优化.docx Java内存模型的历史变迁.docx Java在游戏服务器开发中的应用...
java面试题中有一种代码纠错问题,现总结了几道代码错误问题
java面试笔试资料Java经典项目集锦java笔试题大集合及答案题库java笔试题汇总资料个合集(188) 100家大公司java笔试题汇总.doc 125条常见的java 面试笔试题大汇总.pdf 2011最新整理java经典代码.doc 25个经典的Spring...
### Java经典面试题知识点 #### Java数据结构容器 - **核心知识点**:Java集合框架,包括List、Set、Map等接口及其实现类。List接口代表有序的集合,例如ArrayList和LinkedList;Set接口代表不允许重复元素的集合,...
这份压缩包包含的“JAVA编程题全集(50题及答案).doc”和“Java面试题(附答案).doc”是针对Java程序员准备的面试资源,涵盖了广泛的知识点,旨在帮助求职者提升面试技能和深化技术理解。 1. **基础语法**:Java的...
【Java面试之——代码与编程题】是Java程序员在求职过程中常常遇到的面试环节,主要考察应聘者对Java语言的理解和实际操作能力。面试中,面试官可能会提出各种类型的编程题目,包括但不限于设计模式、继承机制、内部...
java面试笔试题库java笔试题大集合及答案互联网公司面试资料Java面试问题集大全合集(200个): JavaEE学习笔记.pdf java_Java_学习笔记.pdf Java_Performance.pdf java代码效率优化.docx Java内存模型的历史变迁....
这份压缩包包含了三份文档:JAVA经典算法40题.doc、最新JAVA编程题全集_50题及答案.doc、50道JAVA基础编程练习题.doc。这些文档提供了不同难度级别的问题,适合不同层次的Java学习者进行学习和实践。 首先,让我们...
代码与编程题.doc 华为Java笔试题.txt 单元测试、集成测试、系统测试、验收测试、回归 某公司java笔试题.(超难).txt 白盒测试.txt 软件开发工程师试题---答案.doc 软件测试.doc 软件测试面试题.txt 黑盒测试、白盒...
以上是Java面试笔试题的常见内容,每个主题都包含丰富的理论和实践细节,需要通过大量的练习和项目经验来深入掌握。通过学习和复习这些知识点,不仅能为面试做好准备,也能提升自身的编程技能和问题解决能力。
拼多多2021部分编程题合集.docx 数据库面试专题及答案.pdf 正则表达式.pdf 消息中间件面试专题及答案.pdf 深入浅出Redis.pdf 爱奇艺2021Java方向笔试题.docx 爱奇艺2021Java方向笔试题(第一场).docx 看透springMvc...
Java 编程题全集(100 题) 本资源摘要信息涵盖了 Java 编程的基础语法、线程练习和经典编程程序,涵盖了字符串拼接、类的创建、线程练习、经典编程程序等多方面的知识点。 基础语法 1. Java 程序设计总复习题 1:...