摘要: 阅读全文
posted @ 2014-06-11 22:02 stark_javac 阅读(828) 评论(0) 推荐(0) 编辑
摘要: java当中readLine同时读写的问题。 阅读全文
posted @ 2014-02-15 11:16 stark_javac 阅读(1456) 评论(1) 推荐(0) 编辑
摘要: 在上一节当中我们说道了,java多线程当中单个消费者对应单个生产者的关系。这个时候有几个点需要注意一下,第一个就是把if判断flag的语句改成while这样能够避免,比如如果我们这个时候用if的话判断完为真之后,线程就睡过去了,但是当下一次线程notify的时候,这个时候生产者还有消费者,也就是一个锁上面的线程拥有线程苏醒的机会是等同的。这个时候,如果生产者冻结之后,紧接着notify的话这个时候苏醒的还可能是生产者,这是我们不愿意看到的。那我们应该如何来处理呢,这个时候我们就应该把if改成while因为while是个循环,当下一次该线程苏醒的时候还应到回过头来判断,flag标记,这样就避免了 阅读全文
posted @ 2013-10-21 21:56 stark_javac 阅读(1005) 评论(0) 推荐(0) 编辑
摘要: 在java多线程当中还有一种关系需要我们来重点掌握,那就是生产者和消费者的关系。那么什么是生产者,什么是消费者呢?我们可以举个例子来说,有张三、李四负责生产烤鸭,王五、马六负责吃烤鸭,那么前者生产完烤鸭之后,如果烤鸭没有被吃完的话,这个时候就不再生产了,如果此时烤鸭吃没了,这个时候消费者就要告诉生产者,烤鸭吃没了,你要继续生产烤鸭,否则生产者一直处于等待的状态。如何来用代码体现呢?1、定义两个类,一个是生产者类 Product 一个是消费者类Consume,两个类分别实现Runnable中的run方法。2、Product当中的run方法的任务就是生产烤鸭,Consume当中的run方法中就负责 阅读全文
posted @ 2013-10-20 20:29 stark_javac 阅读(293) 评论(0) 推荐(0) 编辑
摘要: 形成死锁的前提是同步代码块嵌套。什么是死锁?当一个线程拿到锁以后在这个锁内部的代码需要访问另一段的代码的时候另外一个程序的锁被另外一个线程拿到,这样的话,就造成了两个锁互不想让程序没法往下执行的这种状况就是死锁。 1 class DeadDemoA implements Runnable 2 { 3 Object obj = new Object(); 4 int x = 0; 5 6 public void run() 7 { 8 9 10 if(x == 0){11 12 while(tr... 阅读全文
posted @ 2013-10-20 16:09 stark_javac 阅读(257) 评论(0) 推荐(0) 编辑
摘要: 这一节我们来说一个示例就是卖票示例:需求:我们现在有100张票,然后分四个窗口来卖,直到卖完为止。思路:1、先定一个一个票类,描述票的属性,还有打印卖出的票,并且实现Runnable中的run方法。2、定义一个主方法,把这个类当成一个独立的运行程序。3、在主方法当中创建4个线程来卖票。代码: 1 class Ticket implements Runnable 2 { 3 4 int num = 100; 5 6 public void sellT() 7 { 8 9 while(true)10 {11 12 ... 阅读全文
posted @ 2013-10-20 14:04 stark_javac 阅读(1479) 评论(0) 推荐(0) 编辑
摘要: 我们上一节当中讲到了创建线程的第一种方法,就是继承Thread类,覆写Thread当中的run方法,然后创建子类对象,之后调用对象的start方法启动线程。但是这种方法有一个缺陷,因为我们知道在java当中类与类当中是单继承的关系,假如现在我们的子类是另外一个类的子类,这个时候如果这个子类想使用多线程的话,就没有办法了。我们之前说接口的时候,知道接口的存在就是为了扩展类的功能,而避免多继承。那么有没有一种方法可以通过实现接口来完成多线程的创建呢?我们查阅Api可以知道,在java当中为我们提供了一个Runnable接口。在查阅文档的同时,我们知道在Runnable这个接口当中,只有一个run方 阅读全文
posted @ 2013-10-20 13:09 stark_javac 阅读(310) 评论(0) 推荐(0) 编辑
摘要: 阅读全文
posted @ 2013-10-19 09:44 stark_javac 阅读(145) 评论(0) 推荐(0) 编辑
摘要: 现在我们有这么一个需求,就是在主线程在运行的同时,我们想做其他的任务,这个时候我们就用到了多线程。那么如何创建多线程,我们知道在系统当中qq的多线程创建是由操作系统来完成的,那么如果我们想在java当中创建多线程的话,应该如何去做呢?解决问题的时候,我们第一个应该想到的是,java当中是否给我们提供了解决该问题的对象,并且把这个对象暴漏出来供我们使用,特别是设计系统。这个时候我们去查阅javaapi。创建线程的步骤:1、创建一个类继承Thread类,此时这个类也就是线程2、在该类当中覆盖Thread类的run()方法。3、直接创建Thread子类的对象创建线程。4、调用start()方法,开启 阅读全文
posted @ 2013-10-18 12:42 stark_javac 阅读(306) 评论(0) 推荐(0) 编辑
摘要: 一、线程总述: 线程是java当中一个重要的内容,如果想说线程的话,那我们应该先来讲一下什么是进程。 进程:那么什么是进程呢,进程从字面上来理解就是,正在进行的程序。就比如说我们在windows当中打开任务管理器之后,我们看到的一个个程序一样。这个程序是在内存当中运行的,我们也可以说,进程就是对应在内存当中该程序所开辟的内存空间。在程序当中程序并不是负责程序执行的,实际上真正执行的是线程也叫做执行路径,从上往下执行,进程只是负责分配内存空间。 线程:就是程序当中中,负责程序执行的控制单元,也叫做执行路径。一个进程当中可以有多个执行路径,称之为多线程。一个进程当中,至少要有一个线程。多线程... 阅读全文
posted @ 2013-10-17 21:08 stark_javac 阅读(237) 评论(0) 推荐(0) 编辑