1:不要显式创建线程,请使用线程池
new Thread() {
@Override
public void run() {
。。。。
不要显式创建线程,请使用线程池。
Inspection info:
线程资源必须通过线程池提供,不允许在应用中自行显式创建线程。 说明:使用线程池的好处是减少在创建和销毁线程上所花的时间以及系统资源的开销,解决资源不足的问题。如果不使用线程池,有可能造成系统创建大量同类线程而导致消耗完内存或者“过度切换”的问题。
ThreadFactory namedThreadFactory = new ThreadFactoryBuilder()
.setNameFormat("demo-pool-%d").build();
ExecutorService singleThreadPool = new ThreadPoolExecutor(1, 1,
0L, TimeUnit.MILLISECONDS,
new LinkedBlockingQueue<Runnable>(1024), namedThreadFactory, new ThreadPoolExecutor.AbortPolicy());
singleThreadPool.execute(()-> System.out.println(Thread.currentThread().getName()));
singleThreadPool.shutdown();
2:
long或者Long初始赋值时,必须使用大写的L,不能是小写的l,小写容易跟数字1混淆,造成误解。
Negative example:
//It is hard to tell whether it is number 11 or Long 1.
Long warn = 1l;
Positive example:
Long notwarn = 1L;
3:避免通过一个类的对象引用访问此类的静态变量或静态方法,无谓增加编译器解析成本,直接用类名来访问即可
4:使用String[] args定义数组,不允许使用String args[]
单单两句是比较不出什么不同的, 但如果你这样写.
String args[], argt;
String[] args, argt;
这就有很显示的差异了. 在第一句中args是字符串数组类型, 而argt则就是字符串变量. 在第二句中args与argt都是字符串数组类型.
其实功能作用是完全一样的,两种写法都可以。