编程小知识点范例-2

简介:
【注】
windows设置环境变量,例如设置jdk为1.7.0版本(一定要把%path%加上):
set path="D:\ProgramFiles\Java\jdk1.7.0\bin";%path%

 

1、取得当前进程下的所有线程

 
  1. public static String[] getThreadNames() { 
  2.         ThreadGroup group = Thread.currentThread().getThreadGroup(); 
  3.         ThreadGroup parent = null
  4.         while ((parent = group.getParent()) != null) { 
  5.             group = parent; 
  6.         } 
  7.         Thread[] threads = new Thread[group.activeCount()]; 
  8.         group.enumerate(threads); 
  9.         java.util.HashSet<String> set = new java.util.HashSet<String>(); 
  10.         for (int i = 0; i < threads.length; ++i) { 
  11.             if (threads[i] != null && threads[i].isAlive()) { 
  12.                 try { 
  13.                     set.add(threads[i].getThreadGroup().getName() + "," 
  14.                             + threads[i].getName() + "," 
  15.                             + threads[i].getPriority()); 
  16.                 } catch (Throwable e) { 
  17.                     e.printStackTrace(); 
  18.                 } 
  19.             } 
  20.         } 
  21.         String[] result = (String[]) set.toArray(new String[0]); 
  22.         java.util.Arrays.sort(result); 
  23.         return result; 
  24.     } 

 2、Java多线程--让主线程等待所有子线程执行完毕

参考:http://3ccoder.iteye.com/blog/581476

  1. public class ImportThread extends Thread {  
  2. private CountDownLatch threadsSignal;  
  3. public ImportThread(CountDownLatch threadsSignal) {  
  4. this.threadsSignal = threadsSignal;  
  5. }  
  6. @Override  
  7. public void run() {  
  8. System.out.println(Thread.currentThread().getName() + "开始...");  
  9. //Do somethings  
  10. threadsSignal.countDown();//线程结束时计数器减1  
  11. System.out.println(Thread.currentThread().getName() + "结束. 还有" + threadsSignal.getCount() + " 个线程");  
  12. }  
  13. }  

 

 main:

  1. CountDownLatch threadSignal = new CountDownLatch(threadNum);//初始化countDown  
  2. for (int ii = 0; ii < threadNum; ii++) {//开threadNum个线程  
  3. final Iterator<String> itt = it.get(ii);  
  4. Thread t = new ImportThread(itt,sql,threadSignal);  
  5. t.start();  
  6. }  
  7. threadSignal.await();//等待所有子线程执行完  
  8. System.out.println(Thread.currentThread().getName() + "结束.");//打印结束标记  

 

3、生产者消费者问题

 
  1. public class ProducerTest { 
  2.     public static void main(String[] args) { 
  3.         Queue q = new Queue(); 
  4.         Producer t1 = new Producer(q); 
  5.         Consumer t2 = new Consumer(q); 
  6.         t1.start(); 
  7.         t2.start(); 
  8.     } 
  9.  
  10. class Producer extends Thread { 
  11.     Queue q; 
  12.  
  13.     public Producer(Queue q) { 
  14.         this.q = q; 
  15.     } 
  16.  
  17.     public void run() { 
  18.         for (int i = 0; i < 10; i++) { 
  19.             q.put(i); 
  20.             System.out.println("Producer put:" + i); 
  21.         } 
  22.     } 
  23.  
  24. class Consumer extends Thread { 
  25.     Queue q; 
  26.  
  27.     public Consumer(Queue q) { 
  28.         this.q = q; 
  29.     } 
  30.  
  31.     public void run() { 
  32.         while (true) { 
  33.             System.out.println("Consumer get:" + q.get()); 
  34.         } 
  35.     } 
  36.  
  37. class Queue { 
  38.     int     value; 
  39.     boolean bFull = false
  40.  
  41.     public synchronized void put(int i) { 
  42.         if (!bFull) { 
  43.             value = i; 
  44.             bFull = true
  45.             notify(); 
  46.         } 
  47.         try { 
  48.             wait(); 
  49.         } catch (Exception e) { 
  50.             e.printStackTrace(); 
  51.         } 
  52.     } 
  53.  
  54.     public synchronized int get() { 
  55.         if (!bFull) { 
  56.             try { 
  57.                 wait(); 
  58.             } catch (Exception e) { 
  59.                 e.printStackTrace(); 
  60.             } 
  61.         } 
  62.         bFull = false
  63.         notify(); 
  64.         return value; 
  65.  
  66.     } 

 4、Comparable接口使用

 
  1. class Student implements Comparable 
  2.     int num; 
  3.     String name; 
  4.     static class StudentComparator implements Comparator 
  5.     { 
  6.         public int compare(Object o1,Object o2) 
  7.         { 
  8.             Student s1=(Student)o1; 
  9.             Student s2=(Student)o2; 
  10.             int result=s1.num > s2.num ? 1 : (s1.num==s2.num ? 0 : -1); 
  11.             if(result==0
  12.             { 
  13.                 result=s1.name.compareTo(s2.name); 
  14.             } 
  15.             return result; 
  16.         } 
  17.     } 
  18.     Student(int num,String name) 
  19.     { 
  20.         this.num=num; 
  21.         this.name=name; 
  22.     } 
  23.      
  24.     public int compareTo(Object o) 
  25.     { 
  26.         Student s=(Student)o; 
  27.         return num > s.num ? 1 : (num==s.num ? 0 : -1); 
  28.     } 
  29.     public String toString() 
  30.     { 
  31.         return num+":"+name; 
  32.     } 

 如要求先name,后age,则可参考如下:

 
  1. class Student implements Comparable<Object> { 
  2.     private String name; 
  3.     private int age; 
  4.  
  5.     public Student(String name, int age) { 
  6.         super(); 
  7.         this.name = name; 
  8.         this.age = age; 
  9.     } 
  10.  
  11.     @Override 
  12.     public int compareTo(Object o) { 
  13.         Student student = null
  14.         if (o instanceof Student) { 
  15.             student = (Student) o; 
  16.         } 
  17.         int ret1 = this.name.compareTo(student.name); 
  18.         // int ret2 = this.age - student.age; 
  19.         return ret1 != 0 ? ret1 : (this.age > student.age ? 1 
  20.                 : (this.age == student.age ? 0 : -1)); 
  21.  
  22.     } 

 5、配置文件覆盖方法

 
  1. String requestedFile = System.getProperty(PROPERTIES_FILE); 
  2.         String propFileName = requestedFile != null ? requestedFile 
  3.                 : "quartz.properties"

 6、static final

一个既是static又是final的字段只占据一段不能改变的存储空间。 带有恒定初始值(即,编译时常量)的static final基本类型全用大写字母命名,并且字与字之间用下划线隔开。如java.lang.byte类里对byte类型的最小值定义:

public static final byte   MIN_VALUE = -128;



本文转自 tianya23 51CTO博客,原文链接:http://blog.51cto.com/tianya23/655642,如需转载请自行联系原作者

相关文章
|
算法 程序员 C++
C++语言学习知识点总结
C++语言学习知识点总结
86 0
|
7月前
|
消息中间件 Linux API
一篇文章讲明白LinuxKernel编程
一篇文章讲明白LinuxKernel编程
40 0
|
6月前
|
存储 编译器 C语言
|
Java 程序员 C语言
用最通俗易懂的方法解释什么是面向对象
用最通俗易懂的方法解释什么是面向对象
90 0
|
设计模式 C#
C#—代码理解知识点(二)
上回介绍了关于第一章所设计的那些知识点,这次介绍一下第二章所涉及到的代码,以及由代码折射出的知识点!
C#—代码理解知识点(一)
有上面的代码之后就不得不上传上上面这个图片了,这是我们刚开始学习C#接触的第一个程序,虽然只是一个简单的输出“Hello World"程序,却带给我了我们这么多的知识以及如此规范的模版!
|
C语言 C++
进阶C语言第三章-------《字符函数和内存函数》 完整思维导图+基本练习题+深入细节+通俗易懂+知识点+建议收藏(二)
进阶C语言第三章-------《字符函数和内存函数》 完整思维导图+基本练习题+深入细节+通俗易懂+知识点+建议收藏(二)
|
安全 C语言 C++
进阶C语言第三章-------《字符函数和内存函数》 完整思维导图+基本练习题+深入细节+通俗易懂+知识点+建议收藏(一)
进阶C语言第三章-------《字符函数和内存函数》 完整思维导图+基本练习题+深入细节+通俗易懂+知识点+建议收藏(一)
|
Unix 编译器 程序员
如何写出高质量的代码 -- 给所有编程学习者的一个建议
如何写出高质量的代码 -- 给所有编程学习者的一个建议
175 0
如何写出高质量的代码 -- 给所有编程学习者的一个建议
|
存储 搜索推荐 程序员
【C++】如果你准备学习C++,并且有C语言的基础,我希望你能简单的过一遍知识点。
【C++】如果你准备学习C++,并且有C语言的基础,我希望你能简单的过一遍知识点。