//实现插入效果,插入“XY”(隔行插入)
RandomAccessFile ra = null;
try {
ra = new RandomAccessFile(new File("hello.txt"),"rw");
ra.seek(6);
// String str = ra.readLine();
// ra.seek(4);
// ra.write("xy".getBytes());
// ra.write(str.getBytes());
byte[] b = new byte[40];
int len;
StringBuffer sb = new StringBuffer();
while((len = ra.read(b)) != -1){
//ra.write(b);
sb.append(new String(b,0,len));
}
ra.seek(8);
ra.write("lianhao".getBytes());
ra.write(sb.toString().getBytes());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
if (ra !=null) {
ra.close();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
1.程序是静态的,进程是动态的,进程可以细化为线程,一个程序同时可以进行多个线程,那就是多线程
//1.创建一个继承Thread的子类
class Tsethread extends Thread{
//2.重写Thread中的run方法
public void run(){
for (int i = 0; i <= 100; i++) {
System.out.println(Thread.currentThread().getName() + ":" + i);
}
}
}
public class TestThread {
public static void main(String[] args){
//3.创建一个子类的对象,
Tsethread ts = new Tsethread();
//4.调用start方法,开启线程,调用run()方法;
//一个线程只能执行一次start();
ts.start();
for (int i = 0; i <= 100; i++) {
System.out.println(Thread.currentThread().getName() + ":" + i);
}
}
}
yield();调用此方法的线程释放当前CPU的执行权
jion();在A线程中调用B线程的jion方法,当执行到此方法,A线程停止执行,直至B线程执行完毕,A线程再接着执行Jion()方法之后的代码
isAlive();判断当前线程是否存活
sleep();显式当前子线程睡1毫秒
线程通信:wait() notify() notifyAll()
设置线程优先级 MAX_PRIORITY MIN_PRIORITY
说明:创建匿名类的方法 new Thread(){}.start();
多线程的方法,1.继承Thread类 2.通过实现的方式
java的线程分为两种,一种为守护线程,一种是用户线程
java如何实现线程的安全,线程的同步机制
方式一:同步代码块
Synchronize (监视器)
方式二:同步监视器
//关于懒汉式的线程安全问题:使用同步机制。
//对于一般的方法内,使用同步代码块,可以考虑使用this。
//对于静态方法而言,使用当前本身充当锁。
避免死锁问题问题
线程通信:如下关键字使用的话,都得在同步代码块或同步方法中。
wait():一旦一个线程执行到wait().就释放当前的锁
notify()/notifyAll():唤醒wait的一个或所有的线程
String类 可变字符序列
StringBuffer类 不可变字符序列
append()添加 insert(int index,String str)插入 reverse()反转 charAt()查
效率最高:Stringbuilder
Field类和Method类
RandomAccessFile ra = null;
try {
ra = new RandomAccessFile(new File("hello.txt"),"rw");
ra.seek(6);
// String str = ra.readLine();
// ra.seek(4);
// ra.write("xy".getBytes());
// ra.write(str.getBytes());
byte[] b = new byte[40];
int len;
StringBuffer sb = new StringBuffer();
while((len = ra.read(b)) != -1){
//ra.write(b);
sb.append(new String(b,0,len));
}
ra.seek(8);
ra.write("lianhao".getBytes());
ra.write(sb.toString().getBytes());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
if (ra !=null) {
ra.close();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
1.程序是静态的,进程是动态的,进程可以细化为线程,一个程序同时可以进行多个线程,那就是多线程
//1.创建一个继承Thread的子类
class Tsethread extends Thread{
//2.重写Thread中的run方法
public void run(){
for (int i = 0; i <= 100; i++) {
System.out.println(Thread.currentThread().getName() + ":" + i);
}
}
}
public class TestThread {
public static void main(String[] args){
//3.创建一个子类的对象,
Tsethread ts = new Tsethread();
//4.调用start方法,开启线程,调用run()方法;
//一个线程只能执行一次start();
ts.start();
for (int i = 0; i <= 100; i++) {
System.out.println(Thread.currentThread().getName() + ":" + i);
}
}
}
yield();调用此方法的线程释放当前CPU的执行权
jion();在A线程中调用B线程的jion方法,当执行到此方法,A线程停止执行,直至B线程执行完毕,A线程再接着执行Jion()方法之后的代码
isAlive();判断当前线程是否存活
sleep();显式当前子线程睡1毫秒
线程通信:wait() notify() notifyAll()
设置线程优先级 MAX_PRIORITY MIN_PRIORITY
说明:创建匿名类的方法 new Thread(){}.start();
多线程的方法,1.继承Thread类 2.通过实现的方式
java的线程分为两种,一种为守护线程,一种是用户线程
java如何实现线程的安全,线程的同步机制
方式一:同步代码块
Synchronize (监视器)
方式二:同步监视器
//关于懒汉式的线程安全问题:使用同步机制。
//对于一般的方法内,使用同步代码块,可以考虑使用this。
//对于静态方法而言,使用当前本身充当锁。
避免死锁问题问题
线程通信:如下关键字使用的话,都得在同步代码块或同步方法中。
wait():一旦一个线程执行到wait().就释放当前的锁
notify()/notifyAll():唤醒wait的一个或所有的线程
String类 可变字符序列
StringBuffer类 不可变字符序列
append()添加 insert(int index,String str)插入 reverse()反转 charAt()查
效率最高:Stringbuilder
Field类和Method类