JAVA的多线程入门知识小结

Java高级部分的多线程的部分小结:

        本人菜鸟,这是老师强行布置的课后作业,伤不起~~~~(>_<)~~~~哭哭哭

        个人小结,仅供自己复习,欢迎大家踊跃讨论,如有纰漏,还请大神们多多指教吐舌头

 

       一、程序、进程、线程之间相互概念:首先,程序是一个在硬盘中可以执行的代码集合。程序正在进行的部分就是进程,是程序某些个功能的的运行计算的集合。而线程是基于进程开辟的更小的能独立运行的单位。(此处有线程同步和异步的概念)。一个程序至少有一个进程,一个进程至少有一个线程。这里主要讲多线程。

 

       二、线程的创建和启动:分别有三个方法。

1.直接继承一个thread类。

2.实现一个接口类Runable类。(多用这个方法)因为一个类只能继承一个父类,但可以实现多个接口。

3.继承一个TimerTask。可以控制在多少时间后执行这个线程。

 

        三:同步和异步的概念:

线程的同步是指:线程需要执行多件事物,但一次只能做一件事。对于一个对象使用线程同步的概念时,是指一个线程在操作这个对象的时候,其他线程不能能对它进行操作。

线程的异步是指:多个线程同时进行,可以对同一个对象同时进行操作。所以说,线程同步是安全的,线程异步是不安全的。所以在某些地方需要让线程同步。

       实现线程的同步的两种方法:

        1.在需要同步的语句块或方法外面添加一个关键字:synchronized。(用完后会自动的释放锁定的对象)

        2.定义一个接口类:Lock。需要的步骤有:创建锁;上锁;需要被锁定的语句块;解锁。

 

         四、线程的状态
        新建(new Thread):当线程对象被创建的时候
        就绪(Runnable):当调用完线程的start()方法之后.等待系统的调用执行
        运行(Running):线程正在执行它的run()方法。
        阻塞(中断)(Not Runnable):当线程sleep()或者wait()的
        死亡(Dead)):线程run()方法执行完毕。

 

       五、.线程的通信:

线程的通信就是实现多个线程之间的资源共享和交换数据。一般是采取Object的wait( )和notify( )来完成。

但是这两个在使用的时候仅在Synchronized的方法中才能被调用。wait()让线程等待,进入阻塞状态,而notify()则是激活某个等待线程,其实就是撤销该线程的阻塞状态,从而使他们有机会再次运行。

 

        六、线程中暂停和死亡的方法不能够使用,所以在控制线程的暂停、继续和死亡的时候一般是定义两个Boolean类型的变量来控制线程的休眠或死亡状态。示例代码如下:

                                boolean isPause = false;// 是否暂停
                                boolean isStop = false;// 是否停止

                                 public void run() {
                                             while (!isStop) {

                                                              if (!isPause) {
                                                                            //需要在线程中执行的代码
                                                                                    //...
                                                                             }
                                                               try {
                                                                     Thread.sleep(10);
                                                               } catch (Exception e) {
                                                                       e.printStackTrace();
                                                                }
                                                    }
                                         }

 

            七、线程的优先级

            线程的优先级的作用是,告诉线程调度机制这个线程的重要程度的高低。

            线程的最大优先级是10,最小优先级是1,线程的默认优先级是5,可以通过setPriority方法来改变线程的优先级。

 

以上为个人学习多线程的一些要点和概念理解。如有差错,跪求指出,大谢~~~大笑

 

 

你可能感兴趣的:(多线程入门)