❶ java中线程同步的几种方法
线程同步主要有以下种方法(示例中是实现计数的功能):
1、同步方法,即使用synchronized关键字修饰方法,例如:
publicsynchronizedvoidadd(intc){...}
2、同步代码块,即有synchronized关键字修饰的语句块,例如:
publicvoidaddAndGet(intc){
synchronized(this){
count+=c;
}
}
3、使用特殊域变量(volatile)实现线程同步,该方法不能保证绝对的同步。
例如:privatevolatileintcount=0;
4、使用锁实现线程同步,例如:
privateLocklock=newReentrantLock();
publicvoidadd(intc){
lock.lock();//上锁
try{
count+=c;
}finally{
lock.unlock();//解锁
}
}
5、使用原子变量实现线程同步,在java的util.concurrent.atomic包中提供了创建了原子类型变量的工具类,例如:
privateAtomicIntegercount=newAtomicInteger(1);
publicvoidadd(intc){
count.addAndGet(c);
}
6、使用局部变量实现线程同步,如果使用ThreadLocal管理变量,则每一个使用该变量的线程都获得该变量的副本, 副本之间相互独立,这样每一个线程都可以随意修改自己的变量副本,而不会对其他线程产生影响。
ThreadLocal 类的常用方法
new ThreadLocal<T>() : 创建一个线程本地变量
get() : 返回此线程局部变量的当前线程副本中的值
initialValue() : 返回此线程局部变量的当前线程的"初始值"
set(T value) : 将此线程局部变量的当前线程副本中的值设置为value
示例代码:
privatestaticThreadLocal<Integer>count=newThreadLocal<Integer>(){
@Override
protectedIntegerinitialValue(){
return1;
}
};
publicvoidadd(intc){
count.set(count.get()+c);
}
7、使用阻塞队列实现,例如LinkedBlockingQueue,具体使用可网络LinkedBlockingQueue的用法或查看java文档。
❷ Java有多少种方法
您好,提问者:
Java一共有:3777个类。
具体到方法的话那多了去了,光String就有不下10个方法。
❸ java中实现换行有几种方法
java中实现换行有以下几种方法:x0dx0a1.使用java中的转义符"\r\n": x0dx0aString str="aaa"; x0dx0astr+="\r\n"; x0dx0a这样在str后面就有换行了. x0dx0a注意:\r,\n的顺序是不能够对换的,否则不能实现换行的效果. x0dx0a2.BufferedWriter的newline()方法: x0dx0aFileOutputStream fos=new FileOutputStream("c;\\11.txt"); x0dx0aBufferedWriter bw=new BufferedWriter(fos); x0dx0abw.write("你好"); x0dx0abw.newline(); x0dx0abw.write("java"); x0dx0aw.newline(); x0dx0a3.使用System.getProperty()方法: x0dx0aString str = "aaa"+System.getProperty("line.separator"); x0dx0a附:针对常用的系统,可以使用如下的转义符实现换行: x0dx0awindows下的文本文件换行符:\r\n x0dx0alinux/unix下的文本文件换行符:\r x0dx0aMac下的文本文件换行符:\n
❹ java多线程有几种实现方法
java中实现多线程常用的方法有以下三种:
/**
*方法一:继承Thread类,重写run方法
*
*@authorqd
*
*/
{
@Override
publicvoidrun(){
super.run();
}
}
/**
*方法二:实现Runnable接口,,重写run方法
*
*@authorqd
*
*/
{
@Override
publicvoidrun(){
}
}
/**
*方法三:实现Callable<T>接口,重写call方法
*优点:可以传参数,有返回值类型(参数与返回值类型一致)
*
*@authorqd
*
*/
<Integer>{
@Override
publicIntegercall()throwsException{
returnnull;
}
}
❺ JAVA中有哪几种常用的排序方法
排序的方法有:插入排序(直接插入排序、希尔排序),交换排序(冒泡排序、快速排序),选择排序(直接选择排序、堆排序),归并排序,分配排序(箱排序、基数排序)
快速排序的伪代码。
/
/使用快速排序方法对a[
0
:n-
1
]排序
从a[
0
:n-
1
]中选择一个元素作为m
i
d
d
l
e,该元素为支点
把余下的元素分割为两段left
和r
i
g
h
t,使得l
e
f
t中的元素都小于等于支点,而right
中的元素都大于等于支点
递归地使用快速排序方法对left
进行排序
递归地使用快速排序方法对right
进行排序
所得结果为l
e
f
t
+
m
i
d
d
l
e
+
r
i
g
h
t
❻ java中都有些什么方法
在java中,方法就是用来完成解决某件事情或实现某个功能的办法。
方法实现的过程中,会包含很多条语句用于完成某些有意义的功能——通常是处理文本,控制输入或计算数值。
我们可以通过在程序代码中引用方法名称和所需的参数,实现在该程序中执行(或称调用)该方法。方法,一般都有一个返回值,用来作为事情的处理结果。
方法的语法格式:
在Java中,声明一个方法的具体语法格式如下
修饰符 返回值类型 方法名(参数类型 参数名1,参数类型 参数名2,......){
执行语句
………
return 返回值;
}
❼ Java读取文件的几种方法
方式一:采用ServletContext读取,读取配置文件的realpath,然后通过文件流读取出来。因为是用ServletContext读取文件路径,所以配置文件可以放入在web-info的classes目录中,也可以在应用层级及web-info的目录中。文件存放位置具体在eclipse工程中的表现是:可以放在src下面,也可放在web-info及webroot下面等。因为是读取出路径后,用文件流进行读取的,所以可以读取任意的配置文件包括xml和properties。缺点:不能在servlet外面应用读取配置信息。
方式二:采用ResourceBundle类读取配置信息,
优点是:可以以完全限定类名的方式加载资源后,直接的读取出来,且可以在非Web应用中读取资源文件。缺点:只能加载类classes下面的资源文件且只能读取.properties文件。
方式三:采用ClassLoader方式进行读取配置信息
优点是:可以在非Web应用中读取配置资源信息,可以读取任意的资源文件信息
缺点:只能加载类classes下面的资源文件。
方法4 getResouceAsStream
XmlParserHandler.class.getResourceAsStream 与classloader不同
❽ JAVA创建对象有哪几种方式
Java中创建对象的四种方法 收藏Java中创建对象的四种方式x0dx0a1.用new语句创建对象,这是最常见的创建对象的方法。x0dx0a2.运用反射手段,调用java.lang.Class或者java.lang.reflect.Constructor类的newInstance()实例方法。x0dx0a3.调用对象的clone()方法。x0dx0a4.运用反序列化手段,调用java.io.ObjectInputStream对象的 readObject()方法。x0dx0a第一种最常见
❾ java方法类型有哪些
这个从关键字来理解啊,
1. 如果方法定义前面加final,说明你已经知道这个方法提供的功能已经满足你要求,不需要进行扩展,并且也不允许任何从此类继承的类来覆写这个方法,但是继承仍然可以继承这个方法,也就是说可以直接使用。
2. 如果方法定义前面加static,表示静态方法,方法和类关联,直接由类名来调用。
3. 如果方法定义前面加abstract,表示抽象方法,由继承类来实现。
4. 对于方法前面的public, private,protected等这些是控制方法可以被调用的范围。
5. 如果方法定义前面有native,Native方法是由另外一种语言(如c/c++,FORTRAN,汇编)实现的本地方法。因为在外部实现了方法,所以在java代码中,就不需要声明了,有点类似于借口方法,一般用不着。
6.如果方法定义前面加synchronized,表示当前方法体是一个临界区,通过锁机制来控制多个线程同步,在多线程应用里面经常使用。