
java基础
文章平均质量分 58
gjanyanlig
这个作者很懒,什么都没留下…
展开
-
小知识点
1. java中递增程序自身也需要多个步骤,并且在递增过程中任务可能会被线程机制挂起,也就是说,递增不是原子性操作,因此,递增是不安全的,需要保护。2. Thread.yield()给JVM提供建议切换到其他线程,但未必会有效果,这取决于JVM。上述功能也可以用原创 2011-09-17 18:46:44 · 450 阅读 · 0 评论 -
线程学习之面试题
设计4个线程, 2个线程每次对j加1,2个线程每次对j减1,写出程序。package com.lyj.practice;public class MultiThreadShareDate { /** * @param args */原创 2011-09-18 12:02:16 · 639 阅读 · 0 评论 -
线程学习之读写锁模拟缓存系统
不多说,上代码package com.lyj;import java.util.HashMap;import java.util.Map;import java.util.concurrent.locks.ReadWriteLock;import java.原创 2011-09-18 13:29:26 · 600 阅读 · 0 评论 -
java进程间通信
java进程间通信可以采用的办法:Socket/RMI/WEBService/WebServer, 这些都可以实现直接的数据交换 Database/File, 这些可以实现间接的数据交换 看你的业务是否要求实时, 如果不需要, 用数据库交换比较简单转载 2011-09-19 11:22:59 · 3008 阅读 · 0 评论 -
java运算符优先级别
优先级运算符结合性1() [] .从左到右2! +(正) -(负) ~ ++ --从右向左3* / %从左向右4+(加) -(减)从左向原创 2011-09-23 09:55:28 · 2098 阅读 · 0 评论 -
java字符串面试(一)
1. String对象是不可变的,String类中每一个看起来修改String值的方法,实际上都是创建了全新的String对象。package com.lyj.string;/* * String是不可变的 */public class StringDemo {原创 2011-09-23 09:51:41 · 1617 阅读 · 0 评论 -
Java字符串面试(二)
先看下面2个程序public static void main(String[] args) { String a = "a1"; String b = "a" + 1; System.out.println(a =原创 2011-09-23 12:29:28 · 2956 阅读 · 1 评论 -
StringBuffer和StringBuilder区别
很多人对String和StringBuffer的区别已经很了解了吧,可能还有人对这两个类的工作原理有些不清楚的地方,复习一下吧,顺便牵出J2SE 5.0里面带来的一个新的字符操作的类StringBuilder。那么这个StringBuilder和StringBuffer 以及我们转载 2011-09-23 12:07:14 · 1326 阅读 · 0 评论 -
Java容器高级
一. 填充容器1. 用单个对象的引用来填充Collection的方式有2种public class CollectionDemo_06 { public static void main(String[] args) { List list = new ArrayList(Collections.nCopies(4, new StringWord("Hello")));原创 2011-11-07 10:09:03 · 710 阅读 · 0 评论 -
线程学习之卖票
下面的代码是大概思路,还不完善,重在理解好了,上代码package com.lyj;/** * 多个线程操作同一个对象, 卖票 * 执行代码相同,放在一个Runnable中 */public class MultiThreadShareData原创 2011-09-18 11:31:47 · 937 阅读 · 1 评论 -
线程基础之产生线程
产生线程:继承Thread和实现Runnable直接上代码package com.lyj;public class TraditionalThreadDemo1 { public static void main(String[] arg原创 2011-09-17 17:42:36 · 672 阅读 · 0 评论 -
复习之归并排序
原理:代码和上图没关系:package com.lyj.sort;public class MergeSort { /** * @param args */ public static void main(原创 2011-09-19 09:37:51 · 549 阅读 · 0 评论 -
线程学习之线程池
有3种不同的线程池,newFixedThreadPool固定线程数量的,newCachedThreadPool可变线程数量的,newSingleThreadExecutor单一线程下面看代码package com.lyj;/** * 线程池: 固定大原创 2011-09-18 12:41:47 · 608 阅读 · 0 评论 -
线程学习之读写锁
读写锁是指多个线程读锁不互斥,读锁和写锁互斥,写锁和写锁互斥不多说了,看代码package com.lyj;import java.util.Random;import java.util.concurrent.locks.ReadWriteLock原创 2011-09-18 13:21:04 · 644 阅读 · 0 评论 -
线程之Timer
2秒后执行TimerTask, 然后每隔一秒执行一次package com.lyj;import java.util.Timer;import java.util.TimerTask;public class TraditionalTimerDemo {原创 2011-09-17 18:17:21 · 407 阅读 · 0 评论 -
线程学习之线程互斥
线程互斥可以解决多个线程共享一个资源,它有:使用synchronized关键字和显示Lock对象2种方式使用synchronized关键字package com.lyj;/** * 线程互斥 * 1. 两个线程共享一个打印方法 * 2.原创 2011-09-17 19:28:13 · 581 阅读 · 0 评论 -
线程学习之线程本地存储
线程本地存储是解决多个线程共享一个资源(资源共享)的另一种方式。它相当于一个Map, 把一个线程和它的状态(数据)关联起来。上代码package com.lyj;/** * 防止多个线程共享一个资源-----去除对变量的共享 * 线程本地存储 java.原创 2011-09-17 20:43:10 · 880 阅读 · 0 评论 -
线程学习之多个线程对共享资源做不同操作
下面的代码是有2个线程,一个线程对共享变量加1,另一个线程对共享变量减1的实现package com.lyj;/** * 多个线程操作同一个对象。 * 执行代码不同,将要执行的代码封装在一个共享变量中,然后传递给各自的Runnable, 在run原创 2011-09-18 11:35:55 · 863 阅读 · 0 评论 -
线程学习之Callable和Future
Callable用于返回结果,Future用于获取结果用于一个线程等待另一个线程的返回结果,这个线程不用去监听另一个线程是否结束,只要调用他的一个方法就好了。package com.lyj;import java.util.Random;import jav原创 2011-09-18 13:03:40 · 575 阅读 · 0 评论 -
java中final关键字
出处http://www.cnblogs.com/seamanm/archive/2010/10/04/1842079.html根据程序上下文环境,Java关键字final有“这是无法改变的”或者“终态的”含义,它可以修饰非抽象类、非抽象类成员方法和变量。转载 2011-09-18 13:44:57 · 580 阅读 · 0 评论 -
Java容器基础
一.1. 数组具有固定的大小;2. 容器类是List,set,Queue,Map,都可以自动调整自己的尺寸;3. 不用泛型import java.util.ArrayList;public class CollectionDemo_00 { public static void main(String[] args) {原创 2011-11-07 09:12:52 · 827 阅读 · 0 评论