线程常见的问题?
1,多线程存在安全问?
原因:多个线程操作同一个共享数据时,一个线程对共享资源中多条语句执行时还没有执行完毕,另外一个线程参与进来。导致共享数据的错误。
2,解决办法:对操作共享数据的语句只能让一个线程执行过程中,其他线程不能执行。
3,同步代码块:需要被同步的代码。synchronized(对象obj)
Object obj=new Object();synchronized(对象obj)
代码:
synchronized(obj)
{
if(tic>0)
{
System.out.println(Thread.currentThread().getName()+"...sale"+(tic--));
}
}
三、如何找到问题?
1,明确哪些代码是多线程运行代码。
public void run()
{}
2,明确共享数据(一般情况下成员都是共享数据)
private int tic=100;
3,明确多线程运行代码中哪些语句是操作共享数据的。(成员中被多个语句操作的成员)
四、注意:
try{ Thread.sleep(12);}catch(Exception e){};
不能throws抛出异常,因为来自接口中的方法。 |
|