Java编程中的4种代码块详解

网友投稿 261 2023-01-05

Java编程中的4种代码块详解

在java编程中,代码块就是指用“{}”括起来的代码。下面看一下这四种代码块。

1、普通代码块

就是指类中方法的方法体。

public void xxx(){

//code

}

2、构造块

下面用“{}”括起来的代码片段,构造块在创建对象时会被调用,每次创建对象时都会被调用,并且优先于类构造函数(包括有参和无参的)执行。 构造块中定义的变量是局部变量。

public class Client {

{//构造代码块

System.out.println("执行构造代码块");

}

publicClient() {

Systemhttp://.out.println("执行无参构造函数");

}

publicClient(String string) {

System.out.println("执行有参构造函数");

}

}

3、静态块

下面用static"{}"括起来的代码片段,只会在第一次加载此类时,仅执行一次,并且静态块优先于构造块执行。

public class Demo

{

public Demo()

{

System.out.print("默认构造方法!-->");

}

//构造代码块

{

System.out.print("构造代码块!-->");

}

//静态代码块

static

{

System.out.print("静态代码块!-->");

}

public static void test()

{

{

System.out.println("普通方法中的代码块!");

}

}

}

public static void main(String[]args)

{

Demo d = new Demo();

d.test();

}

/*

运行输出结果是:

静态代码块!-->构造代码块!-->默认构造方法!-->普通方法中的代码块!

*/

4、同步代码块

下面使用synchronized(obj){}括起来的代码块,在多线程环境下,对共享数据进行读写操作是需要互斥进行的,否则会导致数据的不一致。常见的是synchronized用来修饰方法,其语义是任何线程进入synchronized需要先取得对象锁如果被占用了,则阻塞,实现了互斥访问共享资源。而synchronized也是有代价的。一个常见的场景是,一个冗长的方法中,其实只有一小段代码需要访问共享资源,这时使用同步块,就只将这小段代码写在synchronized block,既能够实现同步访问,也能够减少同步引入的开销。 同步代码块须写在方法中。

class Ticket implements Runnable //extends Thread

{

object obj=new object();//共享对象,用来记录是否有其它进程在访问

private static int tick=100;

public void run() /*不能在这写同步函数,否则其它线程用不了,需要单独写一个同步函数*/

{

while(true)

{ synchronized(obj)

{

if(tick>0)

{

try

{

Thread.sleep(10); /*每次运行就沉睡一下*/

}

catch(Exception e)

{

}

System.out.println(Thread.currentThread().getName()+"sale:--"+tick--);

}

}

}

}

}

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:工具箱API接口网站(工具箱api接口网站下载)
下一篇:山东邮政快递物流查询单号(济南邮政快递查询单号)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~