- 浏览: 491481 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (234)
- aom学习 (7)
- 2007 (19)
- Java基础 (58)
- spring (7)
- linux (4)
- VMware (3)
- 网络 (3)
- 开发工具类 (14)
- webservices (2)
- 其他 (14)
- database (16)
- hibernate (8)
- jsp_html (14)
- jbpm (5)
- jquery (1)
- 办公软件 (6)
- struts2(webwork) (6)
- web服务器 (2)
- 项目管理 (7)
- 编程规范 (1)
- ps (2)
- JAVA工具类API (4)
- sun_java1.6 (6)
- 金融ISO8583 (1)
- SFTP (1)
- android (1)
- Linux_ftp_命令行下下载文件get与上传文件put的命令应用 (1)
- 公钥+私钥 (1)
- jvm (1)
最新评论
-
fyw2011_huawei:
有没有办法让谷歌也实现该功能? 因为在谷歌上调试时windo ...
window之createPopup方法 -
技术求:
好,flush 时才是execute
浅谈Hibernate的flush机制 -
xyzc2011:
言简意赅
公钥+私钥 -
smith789:
...
Windows 不能在 本地计算机 启动 OracleDBConsoleorcl -
zengshaotao:
肯定,因为要用到
jquery.js与自己的扩展的.js在导入时有先后顺序
线程和多线程的应用.线程类Thread 和线程接口Runnable,首先创建一个线程有两种方法:(1)继承Thread 类(2)实现Runnable接口. 线程中的run()方法就是线程体.(注意的是,不能直接调用run()方法,否则将把它作为普通方法处理,而不是作为线程体运行)
线程的生命周期为: new创建线程-----start()------>Runnable可运行状态<---->Running运行中-run()-Dead死亡. Runnable可运行状态<-----Block阻塞
Running运行中----sleep()/join()--->Block阻塞
注意:线程调用start()方法启动进入Runnable可运行状态,等待cpu的调度.
改变线程的状态可用sleep(),join()等方法.,线程之间还存在优先级的问题,设置优先级的方法是setPriority(),获取优先级是getPriority().
最重要的一个问题就是:当多个线程共享数据,而都对数据进行操作时,如不作任何处理就容易造成数据操作错误,
比如银行柜台和ATM机同时对同一帐户取钱的例子.所以针对这类情况,凡是多线程共享数据的,就应该对数据进行"互斥锁"(synchronized关键字)处理:即一个线程对共享的数据进行操作时,其他线程不能访问该数据直至当前线程执行完毕.
下面是今天做的作业!第一个是用四个线程完成COPY任务,呵呵,了解了一下 flashget的多线程下载原理哈!第二个是放号器,第一行是输出双位,第二行输出单号,哎,不过这个只算是完成了,因为当不用sleep()方法时,就会出现只有一个线程运行,而另一个线程就没有机会了.不过其中的判断是当前的线程是哪个线程时发了我不少时间,一开始用==运算符,总是不行,经过调试,才发现,等号永不会成立,而直接运行else里面的程序, 才发现在引用型中要用equals()来判断内容是否相等,看来还是对这个不太清楚!这其中用到了ArrayList类,真是爽,可以用.add()加数据,还可以用直接打印出整个数列数据.第三是判断文件是否被修改过!
* 将一个500M的文件,用4个线程搬运到另外一个文件目录
里去。 '
package com.softeem.j2se.p002;
import java.io.*;
public class MoveFileRunnable implements Runnable {
private File file;
public File getFile() {
return file;
}
public File setFile(File file) {
return this.file = file;
}
public void run(){
try {
InputStream in = new FileInputStream(file);
RandomAccessFile raf = new RandomAccessFile("F:\\qq.exe", "rw");
byte[] buff = new byte[1024 * 1024];
switch (Integer.parseInt(Thread.currentThread().getName())) {
case 1:
in.skip(0);
raf.seek(0);
break;
case 2:
in.skip(file.length() / 4);
raf.seek(file.length() / 4);
break;
case 3:
in.skip(file.length() / 2);
raf.seek(file.length() / 2);
break;
case 4:
in.skip(file.length() * 3 / 4);
raf.seek(file.length() * 3 / 4);
}
int len;
while ((len = in.read(buff)) != -1) {
raf.write(buff, 0, len);
System.out.println(Thread.currentThread().getName());
}
} catch (FileNotFoundException e) {
e.printStackTrace();
}catch(IOException e){
e.printStackTrace();
}
}
public static void main(String[] args) {
MoveFileRunnable mfr = new MoveFileRunnable();
mfr.setFile(new File("G:\\qq2006beta3.exe"));
Thread th1 = new Thread(mfr,"1");
Thread th2 = new Thread(mfr,"2");
Thread th3 = new Thread(mfr,"3");
Thread th4 = new Thread(mfr,"4");
th1.start();
th2.start();
th3.start();
th4.start();
}
}
* 写一个放号器,打印如下:
2,4,6,8,10...
1,3,7,9...
package com.softeem.j2se.theadtest2;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class NumberMark implements Runnable {
static int i = 1;
ArrayList a1 = new ArrayList();
ArrayList a2 = new ArrayList();
/**
* @param args
*/
public static void main(String[] args) {
NumberMark nm = new NumberMark();
Thread t1 = new Thread(nm, "thread1");
Thread t2 = new Thread(nm, "thread2");
t1.start();
t2.start();
}
public void run() {
while (i < 50) {
try {
Thread.sleep(10);
} catch (InterruptedException e) {
e.printStackTrace();
}
if (Thread.currentThread().getName().equals("thread1")) {
a1.add(i);
} else {
a2.add(i);
}
i++;
}
if (Thread.currentThread().getName().equals("thread1")) {
System.out.println(Thread.currentThread().getName() + a1);
} else {
System.out.println(Thread.currentThread().getName() + a2);
}
}
}
* 每1秒钟一次,判断指定的两个目录下的某个文件
是否被修改,如果被修改,就在Console上打印出
“File changed…”
package com.softeem.j2se.threadtest1;
import java.io.File;
public class FileChange implements Runnable {
private String path1;
private String path2;
public FileChange(String fpath1, String fpath2) {
this.path1 = fpath1;
this.path2 = fpath2;
}
public void run() {
File f1 = new File(path1);
File f2 = new File(path2);
long timestart1 = f1.lastModified();
long timestart2 = f2.lastModified();
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
while (true) {
long timeend1 = f1.lastModified();
long timeend2 = f2.lastModified();
if (!(timestart1 == timeend1 && timestart2 == timeend2)) {
System.out.println("File Changed...");
} else {
System.out.println("File not Changed...");
}
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
/**
* @param args
*/
public static void main(String[] args) {
FileChange fc = new FileChange("F:\\file1\\file.txt","F:\\file2\\file.txt");
Thread thread = new Thread(fc, "thread1");
thread.start();
}
}
发表评论
文章已被作者锁定,不允许评论。
-
多线程环境下使用log4j输出各线程的标识
2012-08-15 16:43 1869多线程环境下使用log4j输出各线程的标识 -
证书导入导出
2011-01-16 11:30 1406导入导出命令示例:证书导入:keytool -import - ... -
BigDecimal使用
2010-06-30 12:02 1442public static void main(Str ... -
org.apache.commons.collections.CollectionUtils.filter
2010-06-17 16:11 1710org.apache.commons.coll ... -
Eclipse is running in a JRE, but a JDK is required
2010-05-22 03:47 1238Eclipse is running in a JRE, b ... -
基于StringTemplate的视图
2010-04-21 15:51 1295基于StringTemplate的视图 一 String ... -
JAVA中数组
2010-04-18 23:53 13691、数组不是集合,它只能保存同种类型的多个原始类型或者对象的引 ... -
Java中String类的方法及说明
2010-04-18 23:26 866http://blog.sina.com.cn/s/blog_ ... -
math.ceil round floor
2010-04-18 23:15 1177Math.ceil(x):比x大(或X相等)的最小 doub ... -
使用java.util.concurrent实现的线程池、消息队列功能
2010-04-18 22:47 2312ThreadPoolManager类:负责管理线程池,调用轮询 ... -
5.0新特性:
2010-04-09 16:58 10705.0新特性:前提:1. JVM没有变, 编译器改变 ... -
什么是线程安全?
2010-04-07 03:25 1868什么是线程安全? 如果你的代码所在的进程中有多个线程在同时 ... -
elipse工作空间中的.metadata
2010-03-26 16:44 1218有时在用eclipse开发时,可能会使编辑器出现异常,这 ... -
BEA WebLogic 9.2平台加速部署Web服务应用
2010-02-23 09:03 2178作为业界知名的Java企业版(JEE)应用基础架构平台,BEA ... -
读内存还是存文件然后读文件
2010-01-28 17:15 1117读内存还是存文件然后读文件,一般优先于读内存为好。 -
spring配置文件名称的最好按java规范进行编写
2010-01-19 09:33 1442spring配置文件名称的最好按java规范进行编写 ... -
Eclipse中安装svn插件Subversive
2010-01-08 11:25 2896最简单的方法是通过Eclipse的插件自动下载和更新功能。 ... -
接口,抽象类
2009-12-02 17:09 1120接口定义了其实现应提供的行为特征 比如 Java code ... -
java基础_容易出错的知识点!
2009-11-30 00:23 1089------------------------------- ... -
java基础_传值与传址方法调用
2009-11-25 02:15 3018public class PassTest { publi ...
相关推荐
这里提到的"core-2.3.0 + QRCode + zxing-1.6-core + zxing-j2se-1.7"组合,是与二维码处理相关的Java库集合。下面我们将详细探讨这些组件以及它们在实际开发中的应用。 首先,"core-2.3.0"可能指的是某个项目的...
jaxmpp-j2se-3.0.0.jar(XMPP/Tigase开发,java代码类型客户端使用的jar包) 需要的朋友自己下载,一个朋友让我帮他找的,就顺便发出来给更多需要的朋友吧
资源名称:Java-J2se、J2ee开发全程视频教程和源码(87集)资源目录:【】Java-J2se-J2ee全程教程(01-10)【】Java-J2se-J2ee全程教程(11-20)【】Java-J2se-J2ee全程教程(21-30)【】Java-J2se-J2ee全程教程(31...
《J2SE-孙鑫授课总结的PPT》是一份深度总结Java标准版(Java 2 Platform, Standard Edition,简称J2SE)核心知识的教学资料,由知名IT教育专家孙鑫精心编撰。这份PPT涵盖了Java SE的各个方面,旨在帮助学习者系统地...
这份名为“j2se-doc-cn”的压缩包包含的是Java API的中文版,对于中国开发者来说,无疑极大地便利了理解和使用Java语言。 在Java API文档中,你可以找到关于类库的详细信息,这些类库构成了Java开发的基础。例如,`...
zxing-j2se-1.7[用于编解二维码].7z"压缩包包含的是ZXing项目的1.7版本,专门针对Java平台的版本,主要用途是处理二维码的编码和解码工作。 首先,我们来了解下ZXing的核心组件——zxing-core-1.7.jar。这个JAR文件...
本文将深入探讨在给定的压缩包中涉及的几个关键组件:`core-3.3.3`, `javase-3.3.3`, `zxing-1.7-core` 和 `zxing-j2se-1.7`,以及与之相关的JDK版本,包括JDK1.7和JDK1.8。这些组件主要用于二维码生成和处理,对于...
标题“j2se-server.rar_connect”暗示我们关注的是Java SE(标准版)服务器端的连接技术,特别是与移动设备交互的代码。描述中提到的"connect mobile javacode"进一步明确了我们要探讨的是如何使用Java来实现移动...
官方版本,亲测可用
官方版本,亲测可用
官方版本,亲测可用
官方版本,亲测可用
官方版本,亲测可用
官方版本,亲测可用
官方版本,亲测可用
官方版本,亲测可用
官方版本,亲测可用
本项目"j2se-Music"显然是基于J2SE实现的一个音乐管理系统的雏形,主要功能包括音乐信息的增加、删除、修改和查询。这个系统可能是一个控制台应用程序,用户通过命令行界面与之交互。 首先,让我们深入了解一下"增...
javase 的api文档 学习java最基本的东西 大家应该都懂得
jar包,官方版本,自测可用