JAVA学习总结

一、LINUX配置JAVA环境

1、下载 JDK,注意是 JDK,不是 JAVA(JRE)

http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html

2、比如我下载的是:jdk-7u45-linux-x64.gz,解压后成为 jdk1.7.0_45 文件夹,然后 

cp jdk1.7.0_45 /usr/local/java

3、在 /etc/profile 添加下面的语句,然后 source /etc/profile 重新载入环境变量。

export JAVA_HOME=/usr/local/java
export JRE_HOME=/usr/local/java/jre
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib:$CLASSPATH
export PATH=$PATH:$JAVA_HOME/bin

二、测试代码

public class Hello
{
    public static void main(String[] args)
    {
        System.out.println("Hello,World!");
    }
}

编译运行:

javac Hello.java
java Hello

三、线程学习

1、直接继承 Thread 类:

class MyThread extends Thread
{
    public void run()
    {
        for(int i = 0; i < 100; i++)
        {
            System.out.println("MyThread --> " + i);
        }
    }
}

public class Main
{
    public static void main(String[] args)
    {
        MyThread ft = new MyThread();
        //ft.run(); //not do this!
        ft.start();
        for(int i = 0; i < 100; i++)
        {
            System.out.println("Main --> " + i);
        }
    }
}

2、实现 Runnable 接口

class RunnableImpl implements Runnable
{
    public void run()
    {
        for(int i = 0; i < 100; i++)
        {
            System.out.println("MyThread --> " + i);
        }
    }
}

public class ThreadTest2
{
    public static void main(String[] args)
    {
        /*
        RunnableImpl ri = new RunnableImpl();
        Thread t = new Thread(ri);
        t.start();
        */
        new Thread(new RunnableImpl()).start();
        for(int i = 0; i < 100; i++)
        {
            System.out.println("Main --> " + i);
        }
    }
}

上面的代码还可以使用匿名内部类来优化:

public class ThreadTest2
{
    public static void main(String[] args)
    {
        new Thread(new Runnable(){
            public void run()
            {
                for(int i = 0; i < 100; i++)
                {
                    System.out.println("MyThread --> " + i);                
} } }).start();
for(int i = 0; i < 100; i++) { System.out.println("Main --> " + i); } } }

3、其它线程常用方法

Thread.sleep(int n);    //休眠 n 毫秒
Thread.yield();    //让出执行权,进入就绪状态(但可能立即又抢到CPU)
Thread.currentThread();  //获取当前线程对象
setName(String name);  //设置线程名字,成员方法
getName();  //获取线程的名字,成员方法
setPriority(int n);    //设置当前线程优先级,从 1~10,也可以使用静态常量如 Thread.MIN_PRIORITY,Thread.MAX_PRIORITY,成员方法
getPriority();    //获取当前线程优先级,从 1~10,成员方法

4、同步代码块关键字(synchronized),即锁

原文地址:https://www.cnblogs.com/tianyajuanke/p/3414000.html