如何更好的学习好java中的多线程

kimila 2015-05-30 10:55:08
目前在学JAVASE基础,集合,IO ,网络编程,反射个人感觉都还好理解,但是唯独多线程这块个人感觉不是很理解,线程死锁的原理我也明白,但是让我自己写个死锁的话或者出个多线程题目的话,那我就是做不出来,就是做不出来。请问,你们都是如何学习多线程的?
...全文
298 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
rumlee 2015-05-31
  • 打赏
  • 举报
回复

public class TestLock {
	private static TestLock tl = new TestLock();

	private Object lock1 = new Object();
	private Object lock2 = new Object();

	public void func1() {
		try {
			System.out.println("fun1");
			synchronized (lock1) {
				System.out.println("获取lock1");
				Thread.sleep(1000L);
				synchronized (lock2) {
					System.out.println("获取lock2");
					Thread.sleep(1000L);
				}
			}
		} catch (Exception e) {
		}
	}

	public void func2() {
		try {
			System.out.println("fun2");
			synchronized (lock2) {
				System.out.println("获取lock2");
				Thread.sleep(1000L);
				synchronized (lock1) {
					System.out.println("获取lock1");
					Thread.sleep(1000L);
				}
			}
		} catch (Exception e) {
		}
	}

	public static void main(String[] args) {
		new Thread() {
			public void run() {
				tl.func1();
			}
		}.start();

		new Thread() {
			public void run() {
				tl.func2();
			}
		}.start();
	}
}
这段程序就会造成死锁 多线程题目太多了,你可以自己做一个生产者消费者的程序,2个生产者线程,3个消费者线程,生产者每100毫秒生产1个,消费者每200毫秒消费1个,缓冲区能存放100个。
txg0426 2015-05-31
  • 打赏
  • 举报
回复
多线程是个好东西,提高程序性能,不过对应的风险也比较大,楼主可以看看 《Java 并发编程实战》 这本书,童云兰翻译的,我也才开始看,希望里面的内容会对你有所帮助。

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧