1、多线程概述
当一个程序运行时,内部可能包含了多个顺序执行流,每个顺序执行流就是一个线程。主要以下几个优点:
线程之间很容易实现共享内存创建线程代价较小Java语言内置多线程功能支持
2、线程的创建和启动
所有的线程对象都是Thread类或其子类的对象,每一个线程完成一定的任务。
Java定义了两种创建线程的方法:
方法一:继承Thread类创建线...
分类:
编程语言 时间:
2015-04-15 19:44:52
阅读次数:
152
举个公司项目开发遇到的一个简单例子,用户上传压缩文件到服务器后,要对该压缩包进行两个操作,一是将该压缩包复制到指定目录,一是将该压缩包解压到另一指定目录,最终响应用户提示文件上传成功。如果压缩包很大的话,上传后进行的复制和解压功能也会占用很长时间,用户就会等待很长的时间。其实复制和解压的功能和用户操作没有直接关系,完全可以独立出来,其解决的思路如下:
当用户上传压缩文件完毕之后,我们立即...
分类:
编程语言 时间:
2015-04-15 19:38:54
阅读次数:
147
前几天老师领着学习了一下单线程和多线程的题目。
这里是操作系统中非常经典的题目,生产者和消费者的题,这里涉及的是仓库,
只有一个人(生产者或消费者)进入,另一个人只有等待。
这里的重点是关于传值的问题。一定要保持一致,不然,对于存和取 的对象,就可能出现多个。
//===========================================================...
分类:
编程语言 时间:
2015-04-15 17:13:36
阅读次数:
150
package com.lipeng;
public class LoopDemo {
/**
* 线程A循环10次,然后线程B循环100次,然后A再循环10次,然后B再循环100次。如此循环50次。
* lipeng
* 2015-4-10
* @param args
*/
public static void main(String[] args) {
MyTa...
分类:
编程语言 时间:
2015-04-14 23:25:54
阅读次数:
180
Java中读写锁有个接口java.util.concurrent.locks.ReadWriteLock,也有具体的实现ReentrantReadWriteLock,详细的API可以查看JavaAPI文档。 下面这个例子是在文例子的基础上,将普通锁改为读写锁,并添加账户余额查询的功能,代码如下:pa...
分类:
编程语言 时间:
2015-04-14 14:21:14
阅读次数:
178
1. 可见性如果一个线程对共享变量值的修改,能够及时的被其他线程看到,叫做共享变量的可见性。如果一个变量同时在多个线程的工作内存中存在副本,那么这个变量就叫共享变量2. JMM(java内存模型)多个线程同时对主内存的一个共享变量进行读取和修改时,首先会读取这个变量到自己的工作线程成为一个副本中,改...
分类:
编程语言 时间:
2015-04-11 23:49:29
阅读次数:
243
记得第一次做java的题的时候,看到“写出生产者消费者问题”,还以为是和工厂模式有关系。现在想想也是被雷倒了。
java的生产者消费者问题其实是讲多线程并发操作同一资源缓冲区,当资源缓冲区满的时候,线程继续添加数据,则应该使其等待,有空间时再发消息通知;当资源缓冲区没有资源,线程继续取数据时,应该使其等待,有资源是再发消息通知;...
分类:
编程语言 时间:
2015-04-11 18:00:17
阅读次数:
147
1、socket服务端package com.socket.project;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import ja...
分类:
编程语言 时间:
2015-04-11 14:57:05
阅读次数:
129
场景简单,其实就是在做WEB请求的时候,处理的结果需要同时通知到一个第三方服务器,通知后再把结果返回给客户端。
现在这个通知只是一个简单通知,如果直接加在客户端请求里面,客户端会在请求第三方服务器时堵塞。另外为了客户端不能超时,所以通知失败后也不敢多次请求。
这里可以使用定制任务来解决这个问题,一个客户端请求后产生一个定制的任务,然后服务后台进行多线程的异步处理,这样就会大大...
分类:
编程语言 时间:
2015-04-11 10:22:43
阅读次数:
215