java模拟并发代码 java并发实践

java 并发实现原理: 是否可以利用多线程,实现10个并发执行 请给个例子(java代码),非常感谢?。。。?/h2>public static void main(String[] args) {
for(Thread t:getThreads()){
t.start();
}
}
public static Thread[] getThreads(){
Thread[] thread = new Thread[10];
for(int i=0;i10;i){
final Integer num = new Integer(i);
thread[i] = new Thread(new Runnable(){
public void run() {
int j=5;
while(j--0){
System.out.println("this is thread" num);
}
}
});
}
return thread;
}
java 并发执行任务 怎么做/**
* 定时器
* */
public class TimeThread extends Thread {
public void run() {
Timer time = new Timer();
TimerTask tst = new TimerTask();//定时执行Rptlog类中的run方法
time.schedule(tst, 1000,10000);//1秒后执行 , 每10秒执行一次
}
}
接下来是实际执行的类
public class TimerSendTask extendsjava.util.TimerTask{
public void run() {
TimerTask tt = new TimerTask();
for(int i=0;iservice.getList().size();i){//循环查询任务
定时清理任务 实现代码段...
....
}
}
}
再写多个任务的类
在这个地方执行以下就好了
TimerTask tst = new TimerTask();//定时执行Rptlog类中的run方法
time.schedule(tst, 1000,10000);//1秒后执行,每10秒执行一次
java代码的高并发怎么用public class Test {
public static void main(String[] args) {
int count = 1000;
ExecutorService executorService = Executors.newFixedThreadPool(count);
for (int i = 0; icount; i)
executorService.execute(new Test().new Task());
executorService.shutdown();
while (!executorService.isTerminated()) {
try {
Thread.sleep(10);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
public class Task implements Runnable {
@Override
public void run() {
try {
// 测试内容
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
如果要实现真正的并发同时执行 , 可通过CyclicBarrier来控制 。
public class Test {
public static void main(String[] args) {
int count = 1000;
CyclicBarrier cyclicBarrier = new CyclicBarrier(count);
ExecutorService executorService = Executors.newFixedThreadPool(count);
for (int i = 0; icount; i)
executorService.execute(new Test().new Task(cyclicBarrier));
executorService.shutdown();
while (!executorService.isTerminated()) {
try {
Thread.sleep(10);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
public class Task implements Runnable {
private CyclicBarrier cyclicBarrier;
public Task(CyclicBarrier cyclicBarrier) {
this.cyclicBarrier = cyclicBarrier;
}
@Override
public void run() {
try {
// 等待所有任务准备就绪
cyclicBarrier.await();
// 测试内容
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
java 多进程并发控制怎么做?进程间的通讯无非就是读写文件java模拟并发代码,socket通讯或者使用共享内存 。你不想用读写文件的方式,那就用共享内存或者socket通讯的方式 。java模拟并发代码我个人觉得用socket比较简单,也许是因为我对socket比较熟悉 。下面是一篇java实现共享内存的文章 , java没法管理内存,其实java模拟并发代码他也是靠创建映像文件来实现的 。共享内存在java中的实现 在jdk1.4中提供的类MappedByteBuffer为我们实现共享内存提供了较好的方法 。该缓冲区实际上是一个磁盘文件的内存映像 。二者的变化将保持同步,即内存数据发生变化会立刻反映到磁盘文件中,这样会有效的保证共享内存的实现 。将共享内存和磁盘文件建立联系的是文件通道类:FileChannel 。该类的加入是JDK为了统一对外部设备(文件、网络接口等)的访问方法 , 并且加强了多线程对同一文件进行存取的安全性 。例如读写操作统一成read和write 。这里只是用它来建立共享内存用,它建立了共享内存和磁盘文件之间的一个通道 。打开一个文件建立一个文件通道可以用RandomAccessFile类中的方法getChannel 。该方法将直接返回一个文件通道 。该文件通道由于对应的文件设为随机存取文件,一方面可以进行读写两种操作,另一方面使用它不会破坏映像文件的内容(如果用FileOutputStream直接打开一个映像文件会将该文件的大小置为0,当然数据会全部丢失) 。这里 , 如果用 FileOutputStream和FileInputStream则不能理想的实现共享内存的要求,因为这两个类同时实现自由的读写操作要困难得多 。下面的代码实现了如上功能 , 它的作用类似UNIX系统中的mmap函数 。// 获得一个只读的随机存取文件对象 RandomAccessFile RAFile = new RandomAccessFile(filename,"r"); // 获得相应的文件通道 FileChannel fc = RAFile.getChannel(); // 取得文件的实际大小,以便映像到共享内存 int size = (int)fc.size(); // 获得共享内存缓冲区,该共享内存只读 MappedByteBuffer mapBuf = fc.map(FileChannel.MAP_RO,0,size); // 获得一个可读写的随机存取文件对象 RAFile = new RandomAccessFile(filename,"rw"); // 获得相应的文件通道 fc = RAFile.getChannel(); // 取得文件的实际大小 , 以便映像到共享内存 size = (int)fc.size(); // 获得共享内存缓冲区,该共享内存可读写 mapBuf = fc.map(FileChannel.MAP_RW,0,size); // 获取头部消息:存取权限 mode = mapBuf.getInt(); 如果多个应用映像同一文件名的共享内存,则意味着这多个应用共享了同一内存数据 。这些应用对于文件可以具有同等存取权限,一个应用对数据的刷新会更新到多个应用中 。为了防止多个应用同时对共享内存进行写操作,可以在该共享内存的头部信息加入写操作标志 。该共享内存的头部基本信息至少有: int Length; // 共享内存的长度 。int mode; // 该共享内存目前的存取模式 。共享内存的头部信息是类的私有信息,在多个应用可以对同一共享内存执行写操作时,开始执行写操作和结束写操作时,需调用如下方法: public boolean StartWrite() { if(mode == 0) { // 标志为0 , 则表示可写 mode = 1; // 置标志为1,意味着别的应用不可写该共享内存 mapBuf.flip(); mapBuf.putInt(mode); // 写如共享内存的头部信息 return true; } else { return false; // 指明已经有应用在写该共享内存 , 本应用不可写该共享内存 } } public boolean StopWrite() { mode = 0; // 释放写权限 mapBuf.flip(); mapBuf.putInt(mode);
java怎么模拟高并发一、背景综述
并发就是可以使用多个线程或进程,同时处理(就是并发)不同的操作 。
高并发的时候就是有很多用户在访问,导致系统数据不正确、糗事数据的现象 。对于一些大型网站,比如门户网站,在面对大量用户访问、高并发请求方面 , 基本的解决方案集中在这样几个环节:使用高性能的服务器、高性能的数据库、高效率的编程语言、还有高性能的Web容器 。这几个解决思路在一定程度上意味着更大的投入 。
使用一般的synchronized或者是lock或者是队列都是无法满足高并发的问题 。
二、解决方法有三:
1.使用缓存
2.使用生成静态页面
html纯静态页面是效率最高、消耗最小的页面 。我们可以使用信息发布系统来实现简单的信息录入自动生成静态页面,频道管理、权限管理和自动抓取等功能 , 对于一个大型网站来说,拥有一套高效、可管理的信息发布系统CMS是必不可少的 。
3.图片服务器分离
图片是最消耗资源的,僵图片和页面分离可以降低提供页面访问请求的服务器系统压力,并且可以保证系统不会因为图片问题而崩溃 。
3.写代码的时候减少不必要的资源浪费:
不要频繁得使用new对象,对于在整个应用中只需要存在一个实例的类使用单例模式.对于String的连接操作,使用StringBuffer或者StringBuilder.对于utility类型的类通过静态方法来访问 。
避免使用错误的方式,如Exception可以控制方法推出,但是Exception要保留stacktrace消耗性能,除非必要不要使用
instanceof做条件判断,尽量使用比的条件判断方式.使用JAVA中效率高的类,比如ArrayList比Vector性能好 。)
使用线程安全的集合对象vector
hashtable
使用线程池
【java模拟并发代码 java并发实践】关于java模拟并发代码和java并发实践的介绍到此就结束了 , 不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站 。

    推荐阅读