java线程操练题
(1) 从Thread担任一个类,并(过载)包围run()要领。在run()内,打印出一条动静,然后挪用sleep()。反复三遍这些操纵,然后从run()返回。在构建器中安排一条启动动静,并包围finalize(),打印一条封锁动静。建设一个独立的线程类,使它在run()内挪用System.gc()和System.runFinalization(),并打印一条动静,表白挪用乐成。建设这两种范例的几个线程,然后运行它们,看看会产生什么。
(2) 修改Counter2.java,使线程成为一个内部类,并且不需要明晰生存指向Counter2的一个。
(3) 修改Sharing2.java,在TwoCounter的run()要领内部添加一个synchronized(同步)块,而不是同步整个run()要领。
(4) 建设两个Thread子类,第一个的run()要领用于最开始的启动,并捕捉第二个Thread工具的句柄,然后挪用wait()。第二个类的run()应在过几秒后为第一个线程挪用modifyAll(),使第一个线程能打印出一条动静。
(5) 在Ticker2内的Counter5.java中,删除yield(),并表明一下功效。用一个sleep()换掉yield(),再表明一下功效。
(6) 在ThreadGroup1.java中,将对sys.suspend()的挪用换成对线程组的一个wait()挪用,令其等待2秒钟。为了担保得到正确的功效,必需在一个同步块内取得sys的工具锁。
(7) 修改Daemons.java,使main()有一个sleep(),而不是一个readLine()。尝试差异的睡眠时间,看看会有什么产生。
(8) 到第7章(中间部门)找到谁人GreenhouseControls.java例子,它应该由三个文件组成。在Event.java中,Event类成立在对时间的监督基本上。修改这个Event,使其成为一个线程。然后修改其余的设计,使它们能与新的、以线程为基本的Event正常协作。