线程中断
当线程的run方法返回时,该线程便终止运行。
线程组
有些程序包含了相当数量的线程。这时,如果按照线程的功能将它们分成不同的类别将很有用。
程序组的例子:
String groupName = ". . . ";
ThreadGroup g = new ThreadGoup(groupName);
线程的优先级
每个线程都有优先级,一个线程将继承其父线程的优先级。可以使用setPriority方法来提高或者降低线程的优先级。
同步
同步可以避免多个线程同时访问一个共享对象。
对象锁
当线程调用synchronized方法时,对象将转换为“锁定”状态。
wait方法,调用wait方法线程将中断运行,且放弃了对对象的锁定,这样可以使另外一个线程启动。
调用notify方法则是将线程从等待列表列表中删除,被删除的线程将再次成为可运行的线程。
一笔比喻理解wait和notify。假设一个线程锁定了一个对象,然后发现由于电话坏了,一次没有办法打电话。首先,线程被锁在电话亭中时,进入随眠状态是不行的。这时,维修工也无法进入电话亭进行设备的维修。通过调用wait方法,线程打开了该对象的锁,并且在外面等候。最后,维修工进入电话亭,在里面将电话亭的门反锁并进行修改工作。当维修工离开后,等待线程并不知道设备已经修好了,也许维修工仅仅是腾空了投币箱。这时,等待线程仍在继续等待,仍然没有希望使用电话。通过调用notify方法,则维修工就可以告诉等待线程,电话状态已经变为可用的了。
从singl模式说起
一般single模式是返回一个全局统一的一个对象,如
public static Singleton getInstance().一般都是使用这个方法来保证返回的对象是唯一的。
但是这个方法对于线程来说并不是非常安全的,这个可以想到。解决办法是增加synchronized关键字保证getInstance方法是同步方法。
最后,锁定的是一个对象,这一点很重要。如果使用了一个类的两个不同的实例,是没有办法保证同步的。参见之前的代码
==========算法==============
插入排序
从数组的前两个元素入手,判断它们的次序并进行排序。然后考虑第三个元素将它插入到前面正确的位置。
伪代码
本内容试读结束,登录后可阅读更多
下载后可阅读完整内容,剩余1页未读,立即下载